我有这个目录结构:
- code
- shared lib 1
- unit tests
- shared lib 2
- unit tests
- extern libs
- gtest + gmock
- extern lib
每个目录都有一个 CMakeLists.txt 文件。
共享库2需要链接共享库2。这个我解决了,如何解决包含?
这是我的共享库 1 的 CMakeList.txt 文件:
SET( LIB_OUTPUT_NAME shlib1 )
FILE (GLOB HEADER_FILES ./*.hpp)
FILE (GLOB SOURCE_FILES ./*.cpp)
ADD_LIBRARY (${LIB_OUTPUT_NAME} SHARED ${SOURCE_FILES} ${HEADER_FILES} )
对于共享库 2:
SET( LIB_OUTPUT_NAME shlib2 )
# what to put here? this doesn't work
include_directories(${shlib1})
FILE( GLOB HEADER_FILES ./*.hpp )
FILE( GLOB SOURCE_FILES ./*.cpp )
ADD_LIBRARY( ${LIB_OUTPUT_NAME} SHARED ${SOURCE_FILES} ${HEADER_FILES} )
target_link_libraries( ${LIB_OUTPUT_NAME} shlib1 )
PS:我有更多的库——不仅仅是 2 个。这就是为什么我正在寻找更通用的解决方案。
我尝试像这样使用target_include_directories:
target_include_directories( ${LIB_OUTPUT_NAME} PUBLIC ${shlib1} )
但它没有用。