我的情况是我不应该打扰现有的CMakeLists.txt文件,但我仍然应该在我的构建中添加一些g ++系统包含目录.
换句话说,我需要-isystem /path/to/my/include添加到我的编译器标志,但在调用类似的东西时cmake ...
也许是这样的cmake .. -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -isystem /path/to/my/include"?有没有办法做到这一点?
avt*_*ton 20
我也有同样的问题.我找到了两个解决方案
该在前面的回答沙克拉通过提出一个,即设置与C++标志的环境变量:
export CXXFLAGS=-isystem\ /path/to/my/include
cmake <path to my sources>
Run Code Online (Sandbox Code Playgroud)
或者相同的事情,但环境变量只为此CMake调用设置:
CXXFLAGS=-isystem\ /path/to/my/include cmake <path to my sources>
Run Code Online (Sandbox Code Playgroud)
重要信息:在启动任何此表单之前,您必须清理构建目录(即清理CMake缓存).如果不清除缓存,CMake将继续使用CMAKE_CXX_FLAGS上一次运行中的缓存.
直接CMAKE_CXX_FLAGS在cmake字符串中设置:
cmake -DCMAKE_CXX_FLAGS=-isystem\ /path/to/my/include <path to my sources>
Run Code Online (Sandbox Code Playgroud)我相信它可以通过更"原生"的方式完成,但我没有找到负责CMake中标头路径的变量.
sak*_*kra 14
您可以CXXFLAGS在调用CMake之前设置环境变量.
$ export CXXFLAGS=-isystem\ /path/to/my/include
$ cmake ..
Run Code Online (Sandbox Code Playgroud)
CMake将CMAKE_CXX_FLAGS使用环境变量中的标志初始化缓存变量.该变量会影响所有构建类型.
-DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=<something>即使没有工具链文件,使用也对我有用。这避免了混乱的编译器标志。
对其他答案的补充说明:对于macOS 10.14.5上的CMake 3.15.3,只有使用 CMake 标志的解决方案似乎可以正常工作。
所以,就我而言,只有这个解决方案工作正常:
cmake -DCMAKE_CXX_FLAGS=-I\ /path/to/include <path/to/source>
Run Code Online (Sandbox Code Playgroud)
或者
cmake -DCMAKE_C_FLAGS=-I\ /path/to/include <path/to/source>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21514 次 |
| 最近记录: |