Мне назначили полностью запустить проект с помощью CMake.Избегайте нескольких директив include_directories с использованием Cmake
В принципе, проект имеет более 20 модулей, и для каждого модуля я создал файл CMake , такие как:
# Module: CFS
file(
GLOB_RECURSE
files
*.c
*.cpp
)
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/cfs")
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/kernel2")
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
add_library(cfs ${files})
kernel2 еще один модуль и имеет свой собственный CMakeFile.
Теперь проблема заключается в том, что третий модуль: м3 требует заголовков от СХА (которые также требуют заголовков из kernel2)
Так я в основном иду с:
# Module: m3
file(...)
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/cfs")
add_library(m3 ${files})
target_link_library(m3 cfs)
К сожалению, этого недостаточно, kernel2 включенные файлы не будут найдены при компиляции, если я не добавлю:
include_directories("${PROJECT_SOURCE_DIR}/include/PEM/kernel2")
Я делаю это неправильно? Возможно, я также должен добавить файлы include, используя директиву add_library?
Либо я объяснил это неправильно, либо неправильно. Но так как cfs компилирует и выводит файл библиотеки, нет ли способа сказать m3 использовать эту библиотеку, не включая заголовки ядра2? – Salepate
Если заголовки cfs содержат заголовки ядра 2 - нет. Если вы хотите, я могу расширить ответ с объяснением, почему это так. – arrowd
Если вы не возражаете, я бы хотел этого. – Salepate