У меня есть библиотека "lib" и исполняемая "демо".
Проблема, с которой я сталкиваюсь, заключается в том, что «демо» не может получить переменные lib_INCLUDES
и lib_LIBS lib
, установленные «lib». Я хочу, чтобы они были установлены, потому что в demo.h
я делаю #include <lib.h>
и не могу найти включение. Я хочу, чтобы CMake сделал lib.h
глобальным включением, т.е. передал -I /path/to/the/dir/with/lib.h/
компилятору.
Исходное дерево:
- src/
- CMakeLists.txt
- lib/
- CMakeLists.txt
- lib.cpp
- lib.h
- demo/
- CMakeLists.txt
- demo.cpp
- demo.h
источник/CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test)
add_subdirectory(lib)
add_subdirectory(demo)
источник/lib/CMakeLists.txt
add_library(lib SHARED lib.h lib.cpp)
target_include_directories(lib ${CMAKE_CURRENT_SOURCE_DIR})
# defined for later use in src/demo/CMakeLists.txt
set(lib_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR})
set(lib_LIBS lib)
источник/демо/CMakeLists.txt
include_directories(${lib_INCLUDES})
add_executable(demo demo.h demo.cpp)
target_link_libraries(demo ${lib_LIBS})
# empty! why?
message(STATUS ${lib_INCLUDES})
Подскажите как "демо" может получить доступ к библиотекам lib_INCLUDES
и lib_LIBS
установленным "lib", в src/demo/CMakeLists.txt
они вроде как пустые.
Я не хочу, чтобы src/demo/CMakeLists.txt
содержал пути к "lib", только src/lib/CMakeLists.txt
должен знать детали "lib", и он должен определять приятные переменные для использования в src/demo/CMakeLists.txt
, которые скрывают все эти детали.
Если возможно, включите в свой ответ работающий файл CMakeLists.txt.