pyt*_*hor 2 makefile cmake compile-time
我想生成一些编译时间常数。对另一个问题的第一个答案使我很接近。从我的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)
Run Code Online (Sandbox Code Playgroud)
从第一次运行的角度来看make,这是有效的compile_time.hpp,因此变量的值是在我运行时定义的,make而不是在我运行时定义的cmake。但是compile_time.hpp当我重新运行make甚至cmake重做makefile 时,不会重制。
我该如何将目标compile_time.cpp标记为phony总是被重新制作?我试过了
add_custom_target(compile_time.hpp)
Run Code Online (Sandbox Code Playgroud)
没有任何作用。
add_custom_target没有DEPENDS选项创建“假”的目标。要使某些目标取决于“假”,请使用add_dependencies()call:
add_custom_target(compile_time
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/compile_time.cmake
)
# Because we use *target-level* dependency, there is no needs in specifying
# header file for 'add_library()' call.
add_library(${PROJECT_NAME} STATIC ${CXX_SRCS})
add_dependencies(${PROJECT_NAME} compile_time)
Run Code Online (Sandbox Code Playgroud)
头文件扫描将自动检测到头文件compile_time.h中库的依赖关系。由于脚本compile_time.cmake无条件更新此标头,因此每次都将重建该库。