我正在处理由两个库链接的一个可执行文件组成的项目。
我正在频繁chages到所有的人,不希望去虽然sudo make install
周期libA
和libB
,所以我用以下方式摆开:静态库子目录和包含路径之间的依赖关系
myProject
├── libA
│ ├── CMakeLists.txt
│ ├── include
│ │ └── libA
│ │ └── *.h
│ └── src
│ └── *.cpp
│
├── libB
│ ├── CMakeLists.txt
│ ├── include
│ │ └── libB
│ │ └── *.h
│ └── src
│ └── *.cpp
│
├── CMakeLists.txt
├── include
│ └── *.h
└── src
└── *.cpp
我使用CMake子目录自动链接到libA
和libB
到myProject
,它工作正常。该CMakeList.txt
s的设置如下:
# myProject/CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(myProject)
add_subdirectory(libA)
add_subdirectory(libB)
# Compiler flags, listing of the source files into ${SOURCE_FILES}, etc.
add_executable(myProject ${SOURCE_FILES})
target_link_libraries(myProject libA libB)
# myProject/libA/CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(libA)
# Compiler flags, listing of the source files into ${SOURCE_FILES}, etc.
add_library(libA STATIC ${SOURCE_FILES})
target_include_directories(libA PUBLIC include)
install(
TARGETS libA
ARCHIVE DESTINATION lib
)
install(
DIRECTORY include/glk
DESTINATION include
)
myProject/libB/CMakeLists.txt
是相似的。
现在,这里的问题:libB
对libA
的依赖,以及包括libA
的头通过#include <libA/foo.h>
,并在链接将需要libA
符号(虽然我想这是一个非问题与静态库)。
如何正确设置此依赖关系,以便libB
找到所需的关于此本地的所有信息libA
,理想情况下只需修改myProject
的配置?
感谢您的详细解释,这个作品奇观:) – Quentin