У меня есть проект C ++, и я хочу использовать CMake в проекте.В моем проекте несколько каталогов и подкаталогов.
У меня есть верхний уровень CMakeLists.txt
, который создает весь проект.У меня также есть CMakeLists.txt
в подкаталогах.Я хотел установить флаги компилятора, но вот что меня смущает.Применяются ли эффекты флагов компилятора в CMake только к соответствующему каталогу или будут применяться ко всему проекту?
Например, с моим проектом (назовем его 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")
Что я не понимаю, так это то, чтокомпилятор также будет использовать флаг -Wno-narrowing
для файлов cpp в подкаталоге B
(в общем, будет ли он применяться ко всему проекту)?
Является ли область установки флага компилятора (вообще любой переменной)в CMakeList.txt
применимы только к соответствующему каталогу или будут применяться глобально на протяжении всего проекта?