0

如何处理项目根目录之外的库?目前我想使用 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”指定链接库。

4

0 回答 0