Я пытаюсь написать скрипт сборки с современным CMake (без глобальных переменных и с целями).Пока все прошло нормально, но теперь я хочу связать библиотеку (module2) с библиотекой (module1), которая зависит от первой.Но открытый заголовок module2 не найден компилятором, а каталог include указан в «build / CMakeFiles / Module1.dir / includes_CXX.rsp».Итак, мой вопрос, как мне это работает?
Структура проекта:
|-Module1
|-|-inc (public headers)
|-|-src (private headers and sources)
|-|-CMakeLists.txt (3)
|-Module2
|-|-inc (here is "module2.h" which I want to include in Module1)
|-|-src
|-|-CMakeLists.txt (2)
|CMakeLists.txt (1)
Project-CMakeLists.txt (1): На данный момент исполняемого файла нет
cmake_minimum_required(VERSION 3.8)
project(foo CXX)
add_subdirectory(Module2)
add_subdirectory(Module1)
Module2-CMakeLists.txt (2):
add_library(Module2 OBJECT
${CMAKE_CURRENT_SOURCE_DIR}/src/module2_1.cpp
)
target_include_directories(Module2
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/inc
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
)
Module1-CMakeLists.txt (3):
add_library(Module1 OBJECT
${CMAKE_CURRENT_SOURCE_DIR}/src/add.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/sub.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/functions2mock.cpp
)
target_include_directories(Module1
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/inc
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
)
target_link_libraries(Module1 PRIVATE Module2)
Я думал с помощью команды "target_link_libraries" Module1 getвсе общедоступные, флаги и т. д. из Module2.
Надеюсь, кто-нибудь может мне помочь, спасибо.
Привет.