【发布时间】:2018-10-07 15:18:38
【问题描述】:
我有一个 C++ 项目,我想在项目中使用 CMake。我的项目有多个目录和子目录。
我有一个构建整个项目的顶级CMakeLists.txt。我在子目录中也有CMakeLists.txt。我想设置编译器标志,但这是我感到困惑的地方。 CMake中编译器flags的效果是只作用于对应的目录还是作用于整个项目?
例如,我的项目(我们称之为MyProject)有一个关联的CMakeLists.txt。该项目有两个子目录A 和B。每个都有自己的CMakeLists.txt。在A/CMakelist.txt 中,我将编译器标志设置如下:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y -Wno-narrowing")
B/CMakeLists.txt 如下:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")
我不明白的是编译器是否也会对子目录B中的cpp文件使用标志-Wno-narrowing(通常它会适用于整个项目)?
在CMakeList.txt 中设置编译器标志(通常是任何变量)的范围是仅适用于相应目录还是将在整个项目中全局应用?
【问题讨论】: