当标头文件更改时,为什么CMAKE构建不会开始构建
Why would a CMake build not start build when header file changes
下面是我构建项目的方式的一小部分。我有标题列表和源文件列表,然后将它们传递给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}")
相关文章:
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 用CMake构建C++协议
- Clion显示错误,但可以使用Cmake成功构建代码
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 最小的CMake构建为Android
- 尝试将 boost::stacktrace 添加到 CMake 项目时出现构建错误
- 在Cmake构建CmakeList.txt中读取/解析XML文件
- 以现代 CMake 方式控制包含的库中的构建选项(测试等)
- 在现有的C++可执行项目CMAKE中构建Apache Arrow
- 如何使用CPack打包多个cmake构建结果?
- 如何使用 CMake 在 android 构建上编译和共享两个 c++ 库
- Vcpkg Pango CMake 构建失败缺少头文件
- 使用Protobuf构建CMAKE项目
- 错误:在 mingw64 上构建 cmake+boost 项目时'GetSystemTimeAsFileTime'的类型冲突
- 如何在配置主项目的同时构建cmake ExternalProject
- 在构建CMake时使用非默认的libstdc++