Включая файлы из параллельной структуры каталогов

Не совсем дубликат: CMake включает путь

У меня изначально была структура каталогов:

root
    src
        foodir
            foo.cpp
            foo.h

Затем заголовочные файлы были перемещены в свои собственные параллельные каталоги:

root
    src
        foodir
            foo.cpp
    include
        foodir
            foo.h

Проблема в том... где foo.cpp просто использовал #include "foo.h"теперь оно должно использовать #include "foodir/foo.h" (составлено с -Iinclude).

Итак, это не настоящая "проблема", но было бы лучше, если бы я мог сохранить "foo.h" вместо "foodir/foo.h" (много файлов). Есть ли способ, с помощью cmake, чтобы компилятор смотрел в соответствующем подкаталоге include/?

2 ответа

Добавить include/foodir к списку путей поиска компилятора, просто используйте include_directories, Предполагая, что ваш CMakeLists.txt верхнего уровня находится в "root":

include_directories(${CMAKE_SOURCE_DIR}/include/foodir)

Вам просто нужно пройти подходящий -I<dir>/foobar аргумент. Например -Iinclude/foobar может работать. Когда используешь make вы бы традиционно добавили опцию CPPFLAGS (что реально используется, конечно, зависит от конкретных правил проекта).

Другие вопросы по тегам