2013-07-21 5 views
1

Я проект структурирован следующим образом:Правильная установка CMake включить заголовки

─root 
    ├──src 
    │ ├──main.cpp 
    │ └──CMakeLists.txt[2] 
    ├──build 
    ├──out 
    ├──inc 
    ├──dep 
    │ ├──log 
    │ │ ├──include 
    │ │ │  └──log.h 
    │ │ ├──src 
    │ │ │ └──log.cpp 
    │ │ └──CMakeLists.txt[4] 
    │ └──CMakeLists.txt[3] 
    └──CMakeLists.txt[1] 

Под dep У меня есть библиотека протоколирования, которая является внешним хранилищем мерзавцев с его собственным CMakeLists.txt файла.

Основной CMakeLists.txt (отмечен как [1]) является:

cmake_minimum_required(VERSION 2.6) 
set(APP_ROOT ${PROJECT_SOURCE_DIR}) 
add_subdirectory(dep) 
add_subdirectory(src) 

CMakeLists.txt (отмечен как [2]) для текущего кода проекта является:

add_executable(app main.cpp) 
target_link_libraries(app log) 
include_directories("${APP_ROOT}/inc") 

CMakeLists.txt (отмечены как [3]) для зависимостей:

add_subdirectory(log) 

Что я tr ying делать это, чтобы содержимое папки dep/log/include было скопировано в новую папку под названием inc/log, так что в main.cpp я могу написать что-то вроде #include <log/log.h>, но я не понимаю, как это сделать. Я хотел бы избежать редактирования CMakeLists.txt проекта регистратора.

+0

К сожалению, не может внести свой вклад, чтобы ответить, но не может помочь нажать +1 для ASCII-графики. –

+0

Ваше решение выглядит хорошо для меня - я бы добавил его в качестве ответа. – Fraser

+0

Не было бы проще просто добавить каталог включения журнала в путь включения компилятора? – szx

ответ

2

Мое решение: в /dep/CMakeLists.txt Я добавил

file(MAKE_DIRECTORY "${APP_ROOT}/inc/log") 
file(COPY "log/include/" DESTINATION "${APP_ROOT}/inc/log") 
Смежные вопросы