【发布时间】:2016-04-26 17:44:02
【问题描述】:
我有一个这样的代码文件夹结构:
project/
CMakeLists.txt
src/
project.cpp
lib/
libA/
CMakeLists.txt
src/
libA.cpp
include/
libA.h
libB/
CMakeLists.txt
src/
libB.cpp
include/
libB.h
现在,libA 是完全独立的,所以我有一个类似于此的CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project ( libA )
set ( LIBA_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}/include PARENT_SCOPE )
include_directories ( include/ )
file (GLOB LIBA_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}
src/libA.cpp
)
add_library ( libA STATIC ${LIBA_SOURCES} )
但是,libB 取决于 libA。如何导出libA.a 输出路径以用于链接到libB,以及相应的包含路径?
此外,我如何将该数据传递给主项目的父 CMakeLists.txt?
【问题讨论】:
-
有关可能性的讨论,请参见例如Making cmake library accessible by other cmake packages automatically。另一种可能性是通过 CMake 命令行参数(如 done here)将第一个库的路径传播到另一个库。
-
如果我错了,@Florian 纠正我,但您的答案看起来像是针对有两个 单独 项目的情况。如果库作为子目录包含并且尚未构建,
find_package是否有效?