2013-10-26 4 views
1

не совсем дублируют: CMake include pathвключая файлы из параллельной структуры каталогов

Я первоначально имел структуру каталогов, как это:

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" (компилировать ed с -Iinclude).

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

ответ

1

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

2

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

include_directories(${CMAKE_SOURCE_DIR}/include/foodir) 
+1

... или, если вы уже на CMake 2.8.11 или новее, использовать более мощный [ 'target_include_directories'] (HTTP://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:target_include_directories). – ComicSansMS