我有一個庫「lib」和一個可執行文件「demo」。使用它建立一個可執行文件庫
我遇到的問題是「demo」無法獲得由「lib」設置的變量lib_INCLUDES
和lib_LIBS 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
的src /的CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test)
add_subdirectory(lib)
add_subdirectory(demo)
的src/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)
的src /演示/的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。