Кажется, у меня возникают проблемы при настройке пути включения (-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, чтобы посмотреть, помогло ли это, но не повезло.