【发布时间】:2016-12-16 18:40:10
【问题描述】:
我正在尝试使用自定义命令生成标题。每次重建时都应更新标头,以便包含它的源文件也将被重建。 (实际命令是脚本,这里是简化版。)
这是我的项目:
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
set(test_SOURCES test.c)
include_directories("${CMAKE_BINARY_DIR}")
set(VERSION_H_PATH "${CMAKE_BINARY_DIR}/version.h")
message("VERSION_H_PATH: ${VERSION_H_PATH}")
add_custom_command(OUTPUT "${VERSION_H_PATH}" COMMAND "touch" "${VERSION_H_PATH}")
#add_custom_target(GENERATE COMMAND "touch" "${VERSION_H_PATH}")
add_executable(myprog ${test_SOURCES})
add_dependencies(myprog GENERATE)
test.c
#include <version.h>
int main()
{
return 0;
}
现在的问题是,如上所述,CMakeList.txt 根本不会导致 version.h 被创建。只有在我从 add_custom_target 切换到 add_custom_command 之后它才会这样做。但是,如果我以某种方式更改文件,则下一个 make 不会重建项目。
看起来 CMake 无法识别 test.c 依赖于 version.h,尽管它明确地识别了 #include 它。我在这里做错了什么?
【问题讨论】:
标签: cmake dependencies