我想生成一些编译时常量。另一个问题的第一个回答让我接近目标。这是我的CMakeLists.txt文件:
add_library(${PROJECT_NAME} STATIC ${CXX_SRCS} compile_time.hpp)
add_custom_command(OUTPUT compile_time.hpp
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/compile_time.cmake)
这样做的意思是第一次运行
make
时,它会生成compile_time.hpp
,因此当我运行make
而不是cmake
时,变量的值已经定义好了。但是compile_time.hpp
在重新运行make
甚至cmake
以重新制作makefile时并不会被重新生成。
我该如何将目标compile_time.cpp
标记为phony
,以便它总是被重新生成?我尝试过
add_custom_target(compile_time.hpp)
没有效果。
DEPENDS
,这也将是虚假的。它说:该目标没有输出文件,即使命令尝试创建与目标名称相同的文件,该目标始终被视为过时。 - Carlo Wood.PHONY
目标,并且没有办法让它这样做。它所做的是为OUTPUT
文件创建一个规则,然后从未创建该文件,以使其"始终过时"。如果创建了该文件,cmake会将其删除。我认为这是一个糟糕的选择,因为它阻止我做某些事情(结果我无法使用ExternalProject)。 - Carlo Wood