我的情况是我不应该打扰现有的CMakeLists.txt文件,但我仍然应该在我的构建中添加一些g ++系统包含目录。
换句话说,我需要在我的编译器标志中添加-isystem /path/to/my/include
,但在调用类似cmake ..
的内容时。
也许像cmake .. -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -isystem /path/to/my/include"
这样的东西?有没有办法做到这一点?
答案 0 :(得分:16)
我有同样的问题。我找到了两个解决方案:
one proposed by sakra in a previous answer,即使用C ++标志设置环境变量:
export CXXFLAGS=-isystem\ /path/to/my/include
cmake <path to my sources>
OR 同样的事情,但环境变量仅为此 CMake 电话设置:
CXXFLAGS=-isystem\ /path/to/my/include cmake <path to my sources>
重要:在启动任何此表单之前,必须清理您的构建目录(即清理CMake缓存)。如果不清除缓存,CMake将继续使用上一次运行中的缓存CMAKE_CXX_FLAGS
。
直接在cmake字符串中设置CMAKE_CXX_FLAGS
:
cmake -DCMAKE_CXX_FLAGS=-isystem\ /path/to/my/include <path to my sources>
我相信它可以由更多的本地人来完成。方式,但我没有找到一个负责CMake中标题路径的变量。
答案 1 :(得分:14)
您可以在调用CMake之前设置环境变量CXXFLAGS
。
$ export CXXFLAGS=-isystem\ /path/to/my/include
$ cmake ..
CMake将使用环境变量中的标志初始化缓存变量CMAKE_CXX_FLAGS
。该变量会影响所有构建类型。
答案 2 :(得分:6)
即使没有工具链文件,使用-DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=<something>
也为我工作。这样可以避免混乱的编译器标志。
答案 3 :(得分:0)
对于其他答案,还需额外说明:对于 macOS 10.14.5 上的CMake 3.15.3 ,只有使用CMake标志的解决方案才能正常工作。
因此,就我而言,只有此解决方案可以正常工作:
cmake -DCMAKE_CXX_FLAGS=-I\ /path/to/include <path/to/source>