gpt4 book ai didi

c++ - CMAKE如何告诉Makefile链接库?

转载 作者:行者123 更新时间:2023-12-02 09:49:24 25 4
gpt4 key购买 nike

我有一个简单的可执行文件,它使用~/mylib/lib/libmylib.so的库 mylib 中的函数。

CMakeLists.txt上,我告诉CMAKE在哪里找到库并链接它:

find_library(MYLIB_PATH mylib HINT $ENV{HOME}/mylib/lib)
target_link_libraries (output "${MYLIB_PATH}")

完成 cd build; cmake ..之后,将生成 Makefile ,并调用 make可以成功编译该文件。

但是,假设我在 CMakeLists.txt的第二行注释为
find_library(MYLIB_PATH mylib HINT $ENV{HOME}/mylib/lib)
# target_link_libraries (output "${MYLIB_PATH}")

并执行相同的 cd build; cmake ..我得到完全相同的Makefile ,但是 make失败并出现以下错误:
In function `Model::Model(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
Model.cpp:(.text+0x21): undefined reference to `TF_NewStatus'

失败是有道理的,因为未链接库。但是,如果两个 Makefile 都相同,为什么一个 make失败而另一个失败?

最佳答案

CMake为每个可执行文件和库创建link.txt脚本,该脚本执行链接步骤。

该文件通过以下方式用于每个目标的build.make脚本中

$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/<target-name>.dir/link.txt

关于c++ - CMAKE如何告诉Makefile链接库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61593950/

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