当标头文件更改时,为什么CMAKE构建不会开始构建

Why would a CMake build not start build when header file changes

本文关键字:构建 CMAKE 为什么 开始 文件      更新时间:2023-10-16

下面是我构建项目的方式的一小部分。我有标题列表和源文件列表,然后将它们传递给add_executable。有时,经过几个增量构建后,我会更改标头文件,但构建没有任何操作。状态表明检查了每个目标,但看不到任何更改。如果我在CPP文件中进行了少量修改,则执行构建。

这可能是什么原因?

list (APPEND ${PROJ_NAME}_SRC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/lua/lua_config.hpp)
list (APPEND ${PROJ_NAME}_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/source/lua/lua_config.cpp)
add_executable(${PROJ_NAME} ${${PROJ_NAME}_SRC_FILES} ${${PROJ_NAME}_SRC_HEADERS})

我正在使用" Unix Makefiles"发电机。

我看到我所有的项目标头文件都不是生成的depend.cmake文件的一部分。我想这是问题的根源。来自其他Conan软件包的所有标题文件都在那里,但不是顶级项目的标题文件。

需要将标头文件添加到depend.make文件所需的两件事。首先将它们添加到目标的文件列表中,然后我使用 target_include_directories

target_include_directories(${PROJ_NAME} PRIVATE
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)

此时它仍然无法正常工作。这是因为我正在使用两个使用Space ' '字符分开的文件列表。在使用';'加入两个列表后,它开始工作。

add_executable(${PROJ_NAME} "${${PROJ_NAME}_SRC_FILES};${${PROJ_NAME}_HEADER_FILES}")