在CMake中,假设一个人只是设置一个属性,那么它们之间是否有任何区别
set_target_properties(target PROPERTIES prop value)
Run Code Online (Sandbox Code Playgroud)
和
set_property(TARGET target PROPERTY prop value)
Run Code Online (Sandbox Code Playgroud)
?
参看
https://cmake.org/cmake/help/v3.0/command/set_property.html https://cmake.org/cmake/help/v3.0/command/set_target_properties.html
这意味着没有区别,但不是那么清楚.
我似乎在使用CMake中的include_directories()命令设置包含路径("-I")时遇到问题.我的项目目录如下:
Root
| - CMakeLists.txt
| - libs
| - | - CMakeLists.txt
| - | - inc
| - | - | - // lib specific includes
| - | - src
| - | - | - // lib specific sources
| - proj1
| - | - CMakeLists.txt
| - | - inc
| - | - | - // proj1 specific includes
| - | - src
| - | - | - // proj1 specific …Run Code Online (Sandbox Code Playgroud) 我试图修改某个目录下所有目录的编译器标志(即递归所有当前目录子目录及其所有子目录).所以我发现这里有两种方式:
add_directory(dir1)
# ...
add_directory(dirN)
add_compile_options(flag1 flag2 ...)
# or for CMake versions < 3.0 to do something more like:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} flag1 flag2 ...")
Run Code Online (Sandbox Code Playgroud)
手册页add_compile_options非常清楚地表明效果将是"当前目录及以下"(这是我想要的)但是set(CMAKE_CXX_FLAGS ...)我不太确定.
Cmake是否设置变量递归?
从一组CMakeLists.txt文件中,如何确定适当的版本号cmake_minimum_required()?有没有比熟悉CMake功能的历史和使用反复试验更好的方法?