\lib
mylib.so
\- inc
\- mod1
\- mod2
\- another_lib
\examples
\- common_inc
\- example1
CMakeLists.txt
\- src
\- inc
\- example2
...
Я пытаюсь связать общую библиотеку mylib.so с исполняемым файлом, но CMake выдает ошибку
Imported target "mylib" includes non-existent path in its INTERFACE_INCLUDE_DIRECTORIES.
Как связать разделяемую библиотеку из каталога за пределами example1
?
Да, есть много подобных вопросов, но ни у кого не было этой проблемы.
Я последовал Андре ответ и вышел с этим CMakeLists.txt
cmake_minimum_required (VERSION 3.5)
project (example1 CXX)
set (CMAKE_CXX_STANDARD 14)
set (SRC
"src/main.cpp"
"src/mod1.cpp"
)
set (INC
"inc/mod1.hpp"
)
add_library(mylib SHARED IMPORTED GLOBAL)
set_target_properties(mylib PROPERTIES
IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}../../lib/mylib.so"
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}../../lib/inc"
)
add_executable (example1 ${SRC})
target_include_directories(example1 PRIVATE "inc")
target_include_directories(example1 PRIVATE "../common_inc")
target_link_libraries(example1 mylib)