Обмен файлами между несколькими группами в CMake - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь создать настройку CMake для проекта со следующей структурой:

workshop
|    CMakeLists.txt
|    utilities
|    |    utilities.h
|    |    utilities.cpp
|    |    CMakeLists.txt
|    week_1
|    |    week_1.h
|    |    week_1.cpp
|    |    main.cpp
|    |    CMakeLists.txt
|    week_2
|    |    main.h
|    |    week_2.cpp
|    |    main.cpp
|    |    CMakeLists.txt

Все зависит от OpenCV, а программы в week_X зависят также от утилит.

I смог сделать все, кроме соединения с утилитами.

Моя пробная версия:

Файл Мастерская \ CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)
PROJECT(workshop)

SET(OpenCV_DIR OPENCV_DIR)
find_package( OpenCV REQUIRED )

include_directories( ${OpenCV_INCLUDE_DIRS})
add_subdirectory(${CMAKE_SOURCE_DIR}/utilities)
add_subdirectory(${CMAKE_SOURCE_DIR}/week_1)
add_subdirectory(${CMAKE_SOURCE_DIR}/week_2)

Файл week_1 \ CMakeLists.txt (week_2 \ CMakeLists.txt идентичен, просто меняя 1 на 2)

cmake_minimum_required(VERSION 2.8.12)

include_directories( ${OpenCV_INCLUDE_DIRS})
set(SRCFILES week_1.cpp week_1.h main.cpp)
source_group(week_1 FILES ${SRCFILES})
add_executable(week_1 ${SRCFILES})
target_link_libraries(week_1 ${OpenCV_LIBS})

Все в порядке, пока утилиты. Как бы утилиты \ CMakeLists.txt?

1 Ответ

3 голосов
/ 28 марта 2020

Я думаю, вы хотите, чтобы utilities была библиотекой.

В утилитах CMakeLists.txt

# This will create libutilities.a
add_library(utilities
   utilities.cpp
)

target_include_directories( utilities PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
    # Third party libs
    ${OpenCV_INCLUDE_DIRS}

)

target_link_libraries(utilities
    ${OpenCV_LIBRARIES}
)

В week_X вы будете использовать ее как библиотеку, например так:

include_directories(
    ${OpenCV_INCLUDE_DIRS} 
    ${CMAKE_SOURCE_DIR}/utilities # Include utilities header
)

set(SRCFILES week_1.cpp week_1.h main.cpp)
source_group(week_1 FILES ${SRCFILES})
add_executable(week_1 ${SRCFILES})

target_link_libraries(
   ${OpenCV_LIBS}
   utilities # Link to libutilites.a
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...