我处于一种情况下,不应该干扰现有的CMakeLists.txt文件,但仍然需要将某些g++系统包含目录添加到我的构建中。
换句话说,当调用类似cmake ..
这样的命令时,我需要在编译器标志中添加-isystem /path/to/my/include
。
也许可以像这样使用命令:cmake .. -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -isystem /path/to/my/include"
?有没有办法实现这个需求?
我有同样的问题。我找到了两个解决方案:
在之前回答中sakra提出的方法(链接),即设置一个带有C++标志的环境变量:
export CXXFLAGS=-isystem\ /path/to/my/include
cmake <path to my sources>
或者同样的事情,但环境变量仅针对此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中负责头文件路径的变量。
-I
方式一样,即-isystem path0 -isystem path1
)。 - avtomatonCXXFLAGS
。$ export CXXFLAGS=-isystem\ /path/to/my/include
$ cmake ..
CMake会使用环境变量中的标志初始化缓存变量CMAKE_CXX_FLAGS
。该变量将影响所有构建类型。
export
形式:CXXFLAGS=-isystem\ /path/to/my/include cmake ..
- avtomaton使用-DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=<something>
可以让我成功地完成了操作,而不需要工具链文件。这样做可以避免编译器标志的混乱。
针对其他答案,我有一个额外的提示:使用CMake3.15.3在macOS 10.14.5上时,只有使用CMake标志的解决方案似乎能够正常工作。
因此,在我的情况下,只有这个解决方案可以正常工作:
cmake -DCMAKE_CXX_FLAGS=-I\ /path/to/include <path/to/source>
$CMAKE_CXX_FLAGS
将引用一个 shell 变量。这可能不是您想要的。实际上,在命令行上它应该是无用的。 - Alexis Wilke