CMake:无法链接到同一项目中的目标

CMake: Can't link to targets within same project

提问人:Dominic Sesto 提问时间:10/17/2023 更新时间:10/18/2023 访问量:49

问:

我正在尝试将 library2 链接到 library1,两者都在同一个源代码树中:

MyProject
├── CMakeLists.txt
├── Library1
│   └── CMakeLists.txt
│   └── include
│       └── foo.h
│       └── bar.h
│   └── src
│       └── foo.cpp
│       └── bar.cpp
├── Library2
│   └── CMakeLists.txt
│   └── include
│       └── baz.h
│   └── src
│       └── baz.cpp

CMakeLists.txt:

cmake_minimum_required (VERSION 3.17.0)
project(MyProject)

option(BUILD_SHARED_LIBS ON)

add_subdirectory(Library1)
add_subdirectory(Library2)

库1/CMakeLists.txt:

project(Library1)

add_library(library1 
    src/foo.cpp 
    src/bar.cpp
)

target_include_directories(library1 PUBLIC
    ${CMAKE_SOURCE_DIR}/Library1/include
)

库2/CMakeLists.txt:

project(Library2)

add_library(library2 
    src/baz.cpp
)

target_include_directories(library2 PUBLIC
    ${CMAKE_SOURCE_DIR}/Library1/include
    ${CMAKE_SOURCE_DIR}/Library2/include
)

target_link_libraries(library2 PUBLIC library1)

但是当 library2 进入链接阶段时,我收到此错误:

usr/bin/ld: cannot find -llibrary1

链接器似乎没有在源代码树中查找 。我尝试过直接将路径添加到目标中,并通过(也尝试过)。我也不能使用 as 不存在,直到它通过运行 .library1CMAKE_PREFIX_PATHlink_directories()target_link_directories()find_library()library1make

如何链接到将作为同一项目的一部分生成的目标?我觉得这应该有效。

C++ CMake 链接器错误

评论

1赞 Alan Birtles 10/17/2023
这是产生错误的确切代码吗?您确定目标名称中没有错别字吗?
2赞 Botje 10/17/2023
项目是独立的命名空间。删除两个库上的行。project

答: 暂无答案