如何处理项目根目录之外的库?目前我想使用 CMake 链接到我的项目共享库,该库不在某个库的根目录中。该库位于 lib 中,仅在位于 projects\project_n 的项目之间共享。另外,我需要每个项目独立构建库
.
├── lib
│ ├── CMakeLists.txt
│ ├── src1.c
│ ├── hed1.h
│ ├── src2.c
│ ├── hed2.h
│ ...
│ ├── src_n.c
│ └── hed_n.h
└── projects
├── project_1
│ ├── Src
│ ├── Inc
│ ├── build
│ └── CMakeLists.txt
├── project_2
│ ├── Src
│ ├── Inc
│ ├── build
│ └── CMakeLists.txt
...
└── project_n
├── Src
├── Inc
├── build
└── CMakeLists.txt
目前我的 lib\CMakeLists.txt 看起来像这样:
cmake_minimum_required(VERSION 3.20)
file(GLOB_RECURSE SRCS *.c)
add_library(lib SRCS)
projects\project_1\CMakeLists.txt 中负责 lib 链接的部分代码如下所示:
add_subdirectory(../../lib build)
target_include_directories(${PROJECT_NAME} PUBLIC ../../lib)
target_link_directories(${PROJECT_NAME} PRIVATE ../../lib)
target_link_libraries(${PROJECT_NAME} lib)
目前我收到以下错误: CMakeLists.txt:65 (target_include_directories) 处的 CMake 错误:无法为该项目未构建的目标“project_1”指定包含目录。
CMakeLists.txt:66 (target_link_directories) 处的 CMake 错误:无法为不是由该项目构建的目标“project_1”指定链接目录。
CMakeLists.txt:67 (target_link_libraries) 处的 CMake 错误:无法为不是由该项目构建的目标“project_1”指定链接库。