clion在每个构建上运行cmake
clion run cmake on each build
我不确定用clion是否可以做到这一点,我正在测试这个程序,并喜欢用它来写c代码,因为ctags和etags支持真的很好。
我正在将一些文件从cmake源树复制到每个构建的bin位置。在使用clion时,如果我更新了正在复制的一些文件,则结果不会在clion中更新。
如果我回到终端,只运行典型的cmake步骤
cmake ../ && make && bin/./program
它复制了更新的文件,我可以看到我的结果。
这是我在构建中使用的CMake命令。
FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/bin/resources/)
我可能能够重新构造cmake命令,使其每次都具有副本,或者这可能只是一个派系问题。我不确定,希望能够从clion内部处理这一切,而不是回到终端运行cmake命令以使更新生效。
如果您希望CMake在更改某个文件时执行某些操作,则应使用add_custom_command
创建一个规则,并通过DEPENDS
参数传递文件。注意,CMake只支持文件级依赖项,对于make依赖项,您需要列出目录中的所有文件
# Collect list of files within directory.
FILES(GLOB files_list RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/resources/
"${CMAKE_CURRENT_SOURCE_DIR}/resources/*")
# This will contain full paths to files in binary directory.
set(binary_files_list)
foreach(file ${files_list})
set(source_file ${CMAKE_CURRENT_SOURCE_DIR}/resources/${file})
set(binary_file ${CMAKE_CURRENT_BINARY_DIR}/bin/resources/${file})
add_custom_command(OUTPUT ${binary_file}
COMMAND cmake -E ${source_file} ${binary_file}
DEPENDS ${source_file})
list(APPEND binary_files_list ${binary_file})
endforeach()
add_custom_target(resources DEPENDS ${binary_files_list})
注意,在添加/删除文件的情况下,应该显式地运行cmake
。这就是为什么硬编码文件列表优先于GLOB
ing.
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用VS Code和CMake Tools运行自定义命令
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 如何使用传递给编译器的相同参数在 cmake 中运行命令?
- 将 swig2.0 添加到 usr/bin/ 以运行 CMake
- 使用纯 CMake 构建 SFML 时出现运行时错误
- CMake:尝试在 Jenkins 构建机器上运行时出现"Linked Library"错误 (0xc0000135)
- 如何在QT Creator中手动运行CMake和Run
- 在cmake安装后从QtCreator运行项目
- Catch2 单元测试未与 CMake 项目一起运行
- 从 cmake 文件运行 npm 命令
- 为什么与Java和Python相比,使用Cmake运行C++程序每次都需要这么长时间?
- 从Visual Studio 2017运行CMake的PACKAGE目标
- 在命令中运行 cmake 'make'不起作用
- 运行cmake生成的INSTALL.vcxproj在Windows上只能通过命令行
- 用cygwin运行cmake失败
- 如何使用Visual c++编译器运行Cmake for boost 1.39.0构建库
- 使用不同于系统默认的编译器运行CMake
- 如何强制重新运行cmake,或通过CMakeLists.txt添加功能到makefile
- clion在每个构建上运行cmake