Решение немного сложное, но я хотел бы объяснить его в упрощенном виде ...
Структура проекта должна быть:
/src
|
+-- /lib-a
| +-- /includes
| +-- /sources
| +-- LibAConfig.cmake
| \-- CMakeLists.txt
+-- /lib-b
| +-- /includes
| +-- /sources
| +-- LibBConfig.cmake
| \-- CMakeLists.txt
\-- /main
| +-- /includes
| +-- /sources
| \-- CMakeLists.txt
\-- CMakeLists.txt
/src / lib-a / LibAConfig.cmake должно быть:
# Debug
MESSAGE ("-- Library A configuration...")
# Headers
include_directories(${CMAKE_CURRENT_LIST_DIR}/includes)
/ src / lib-a / CMakeLists.txt должно быть:
# Define project
project(LibA CXX)
# Debug
message("-- Working on \"${CMAKE_CURRENT_SOURCE_DIR}\"...")
# Package registration
set(LibA_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# Project files
include_directories(includes)
file(GLOB _SOURCES sources/*.cpp)
# Go on with your module setup...
/ src / lib-b / LibBConfig.cmake должно быть:
# Debug
MESSAGE ("-- Library B configuration...")
# Headers
include_directories(${CMAKE_CURRENT_LIST_DIR}/includes)
/ src / lib-b / CMakeLists.txt должно быть:
# Define project
project(LibB CXX)
# Debug
message("-- Working on \"${CMAKE_CURRENT_SOURCE_DIR}\"...")
# Package registration
set(LibB_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "")
# Project files
include_directories(includes)
file(GLOB _SOURCES sources/*.cpp)
# Reference/Link to LIB-A
find_package(LibA)
# Go on with your module setup...
/ src / main / CMakeLists.txt должно быть:
# Define project
project(MainApp CXX)
# Debug
message("-- Working on \"${CMAKE_CURRENT_SOURCE_DIR}\"...")
# Project files
include_directories(includes)
file(GLOB _SOURCES sources/*.cpp)
# Reference/Link to LIB-A and LIB-B
find_package(LibA)
find_package(LibB)
# Go on with your module setup...
/ src / CMakeLists.txt должно быть:
# Define project
project(MyProject CXX)
# Debug
message("-- Working on \"${CMAKE_CURRENT_SOURCE_DIR}\"...")
add_subdirectory(lib-a)
add_subdirectory(lib-b)
add_subdirectory(main)
# Go on with your module setup...
Я взял приведенный выше пример из моего проекта ...