gpt4 book ai didi

c++ - cmake target_link_libraries() 无法通过 set_target_properties(archive_output_name) 找到重命名的 lib 目标

转载 作者:行者123 更新时间:2023-11-30 03:15:42 26 4
gpt4 key购买 nike

转发~ ps: cmake 版本3.9.2

我的代码库就是这样。

suzanwen@n224-004-133:~/repos/C++/ttt:)$ tree -L 2
.
├── build
│   ├── bin
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   ├── cmake_install.cmake
│   ├── lib
│   ├── Makefile
│   ├── test
│   └── thirdparty
├── build.sh
├── CMakeLists.txt
├── Makefile
├── test
│   ├── CMakeLists.txt
│   └── main.cc
└── thirdparty
├── CMakeLists.txt
├── gflags
└── hellolib

10 directories, 9 files

我的thirdparty/hellolib/CMakeLists.txt是

PROJECT(hello)

SET(LIBHELLO_SRC hello.cc)
MESSAGE(STATUS "LIBRARY PATH=" ${LIBRARY_OUTPUT_PATH})

ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})
SET_TARGET_PROPERTIES(hello_static PROPERTIES ARCHIVE_OUTPUT_NAME "hello")

我的test/CMakeLists.txt是

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/thirdparty/hellolib
${PROJECT_SOURCE_DIR}/thirdparty/gflags/include)

IF(LIBRARY_OUTPUT_PATH)
LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH})
ENDIF(LIBRARY_OUTPUT_PATH)

ADD_EXECUTABLE(main main.cc)

TARGET_LINK_LIBRARIES(main hello)
# TARGET_LINK_LIBRARIES(main hello_static)

当我构建我的顶层项目时,出现这样的错误。

/usr/bin/c++    -rdynamic CMakeFiles/main.dir/main.cc.o  -o ../bin/main  -L/home/suzanwen/repos/C++/ttt/build/lib -Wl,-rpath,/home/suzanwen/repos/C++/ttt/build/lib -lhello
/usr/bin/ld: cannot find -lhello

但是当我用 hello_static 注释行 # SET_TARGET_PROPERTIES(hello_static PROPERTIES ARCHIVE_OUTPUT_NAME "hello")TARGET_LINK_LIBRARIES 时,一切正常。

TARGET_LINK_LIBRARIES 似乎找不到重命名的 lib 目标。谁能解释一下?提前致谢。

最佳答案

It seems that TARGET_LINK_LIBRARIES cannot find renamed lib target.

设置 ARCHIVE_OUTPUT_NAME 属性重命名的不是目标,而是输出文件。因此,与目标 的链接仍然有效:

TARGET_LINK_LIBRARIES(main hello_static)

目标一旦创建就无法重命名,但可以为目标创建别名:

ADD_LIBRARY(hello ALIAS hello_static)

之后就可以链接别名了:

TARGET_LINK_LIBRARIES(main hello)

关于c++ - cmake target_link_libraries() 无法通过 set_target_properties(archive_output_name) 找到重命名的 lib 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56829909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com