Добавление директорий include в CMake при вызове его из командной строки
Я нахожусь в ситуации, когда мне не следует мешать существующим файлам CMakeLists.txt, но я все равно должен добавить в мою сборку какой-нибудь каталог g++ system.
Другими словами, мне нужно добавить -isystem /path/to/my/include
к моим флагам компилятора, но при вызове чего-то вроде cmake ..
.
Может быть, что-то вроде cmake .. -DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -isystem /path/to/my/include"
? Есть ли способ сделать это?
Ответы
Ответ 1
У меня точно такая же проблема. Я нашел два решения:
, предложенный 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_CXX_FLAGS
в строке cmake:
cmake -DCMAKE_CXX_FLAGS=-isystem\ /path/to/my/include <path to my sources>
Я считаю, что это можно сделать более "родным" способом, но я не нашел переменную, отвечающую за пути к заголовкам в CMake.
Ответ 2
Вы можете установить переменную окружения CXXFLAGS
перед вызовом CMake.
$ export CXXFLAGS=-isystem\ /path/to/my/include
$ cmake ..
CMake инициализирует переменную кэша CMAKE_CXX_FLAGS
флагами из переменной среды. Эта переменная влияет на все типы сборки.
Ответ 3
Просто дополнительное примечание к другим ответам: с CMake 3.15.3 на macOS 10.14.5, кажется, что только решение, использующее флаг CMake, работает правильно.
Итак, в моем случае, только это решение работало нормально:
cmake -DCMAKE_CXX_FLAGS=-I\ /path/to/include <path/to/source>