gpt4 book ai didi

c++ - CMake 链接行为取决于 BOOST_ROOT

转载 作者:行者123 更新时间:2023-11-28 07:38:05 28 4
gpt4 key购买 nike

我正在使用 CMake 构建一个项目,其中包括链接到 boost。我使用 CMake 2.8.7,我有

set(Boost_NO_SYSTEM_PATHS true)

我用

find_package(Boost COMPONENTS system filesystem regex REQUIRED)

然后我链接使用

target_link_libraries(projectname ${Boost_LIBRARIES})

我使用环境变量BOOST_ROOT来指定Boost的位置,我的问题如下:

当我设置

BOOST_ROOT=/opt/Boost_1_47

CMake 将库的完整路径传递给链接器,而如果我设置

BOOST_ROOT=/usr

它链接使用

-lboost_filesystem-mt

等CMakeLists.txt 在这两种情况下都是一样的,我唯一改变的是环境变量 BOOST_ROOT。为什么 CMake 在这两种情况下都不传递完整路径?

最佳答案

链接器 能够找到标准路径中的库,如 /lib、/lib64、/usr/lib、/usr/lib64 等。所以在那种情况下,CMake 不需要告诉链接器库位于何处。但在 /opt/boost_1_47 的情况下,由于它不是标准路径,因此 linker 不知道库位于何处。

只需尝试将 CMake 中的 LINK_DIRECTORIES 设置为 Path/To/Boost/Libraries,您会注意到不同的行为。

关于c++ - CMake 链接行为取决于 BOOST_ROOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354071/

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