Кажется, у меня возникают проблемы при настройке пути включения (-I
) с помощью команды include_directories()
в CMake. Каталог моего проекта выглядит следующим образом:
Root
| - CMakeLists.txt
| - libs
| - | - CMakeLists.txt
| - | - inc
| - | - | - // lib specific includes
| - | - src
| - | - | - // lib specific sources
| - proj1
| - | - CMakeLists.txt
| - | - inc
| - | - | - // proj1 specific includes
| - | - src
| - | - | - // proj1 specific sources
Корневой файл CMakeLists.txt
выглядит так:
project(ROOT)
add_subdirectory(libs)
add_subdirectory(proj1)
Файл CMakeLists.txt
в разделе libs
:
project(lib)
add_library(lib STATIC ${lib_hdrs} ${lib_srcs}) // for conciseness, omitted set()
И, наконец, файл CMakeLists.txt
в разделе proj1
:
project(proj1)
include_directories("${ROOT_SOURCE_DIR}/lib/inc") # <- problem line?
add_executable(proj1 ${proj1_srcs})
target_link_libraries(proj1 lib)
Цель состоит в том, чтобы создать библиотеку из исходных и заголовочных файлов в libs, а затем создать ссылку на исполняемый файл, созданный в proj1. Proj1 имеет несколько файлов, которые включают в себя библиотеки #include
, поэтому мне нужно добавить каталоги, которые будут использоваться с -I
. Основываясь на документации, это то, что include_directories()
должен делать. Однако, несмотря на явную установку этого и последующую отладку message(${INCLUDE_DIRECTORIES})
, переменная INCLUDE_DIRECTORIES
является пустой строкой, и каталоги для пути включения не указаны, поэтому моя компиляция proj1 не удалась.
Я также попытался удалить кавычки вокруг ${ROOT_SOURCE_DIR}/inc
, чтобы посмотреть, помогло ли это, но не повезло.