当前位置: 首页 > 知识库问答 >
问题:

使用CMake和Boost时,目标可能只链接到库,CMake正在删除该项目

归建安
2023-03-14

我一直在尝试使用cmake将Boost安装到我的CLion IDE上。我手动设置了Boost CMake变量,如下所示:

         set(Boost_INCLUDE_DIR C:/Users/Ethan/BoostFolder/boost_1_75_0/boost_1_75_0)
         set(Boost_LIBRARY_DIR C:/Users/Ethan/BoostFolder/boost_1_75_0/boost_1_75_0/libs)

不会弹出任何错误。但这里的警告是:

          WARNING: Target "BoostTest" requests linking to directory "C:/Users/Ethan/BoostFolder/boost_1_75_0/boost_1_75_0/libs".  Targets may link only to libraries.  CMake is dropping the item.

阻止我在我的CLion文件中使用Boost。

这里是我完整的cmakelists.txt文件,我想我不应该手动指定Boost变量,但我正急于使用它。

          cmake_minimum_required(VERSION 3.17)
          project(Lantern)

          set(CMAKE_CXX_STANDARD 17)






    add_executable(Lantern
    BattleManager.h
    CharacterComponents.h
    CMain.c++++
    CTests.cpp
    CTree.h
    GameCharacters.h
    GameCommands.h
    GameStructure_main.h
    GameUtilities.h CPlayGround.cpp CPlayGround.h)

   set(Boost_INCLUDE_DIR C:/Users/Ethan/BoostFolder/boost_1_75_0/boost_1_75_0)
   set(Boost_LIBRARY_DIR C:/Users/Ethan/BoostFolder/boost_1_75_0/boost_1_75_0/libs)

  include_directories(${Boost_INCLUDE_DIRS})
  add_executable(BoostTest CPlayGround.cpp)
  target_link_libraries(BoostTest ${Boost_LIBRARY_DIR})

共有1个答案

颜志业
2023-03-14

在这一行中,您告诉CMake将您的可执行目标boosttest链接到一个目录:

target_link_libraries(BoostTest ${Boost_LIBRARY_DIR})

您要做的是通过查看find_package,使用findboost机制:

find_package(Boost REQUIRED <components>)

其中是您需要的Boost库的列表。然后您可以通过执行以下操作将应用程序链接到Boost

target_link_libraries(BoostTest Boost::boost)

并将任何其他非标头Boost库添加到该列表中。上面链接的页面解释了您设置的两个变量用作findboost脚本的提示(和/或输出)。

 类似资料:
  • 我正在尝试链接一个名为libtest lib的预编译共享库文件。所以这是我在CMakeLists的底部所拥有的。txt: 如上所述,我得到以下错误: 如果我注释掉add_library行,我会得到以下结果: 在库中链接时,似乎绝对需要源文件(.c、cpp等)。但我如何在一个。那档案呢?这些文档对target_link_库()做了如下介绍: 被命名的必须是由add_executable()或add_

  • 问题内容: 我使用 CMake* (3.4.1)根据 Boost 库构建一个C ++项目。宿主平台是 Linux ,目标是宿主和 交叉构建 Android NDK。 * 我只使用Boost头文件,而我只是下载/提取了boost文件夹(并且我没有目录)。 在我的文件中,我这样声明对Boost的依赖关系: 我将构建配置如下: 这实际上 可以 像我的 本机 版本一样工作。 现在,当我以完全相同的方式(仅

  • 问题内容: 我正在尝试使用在Linux上运行的CMake构建基于OpenCV的项目。到目前为止,我的文件看起来像 但这会导致动态链接的库。如何链接静态库? 问题答案: 您可以通过在CMake 中将标志设置为false来构建静态OpenCV库。然后,使用这些静态库构建自己的应用程序所需要做的就是在您的计算机中添加对OpenCV的依赖: 和CMake将照顾一切。

  • 我正在尝试用MinGW编译器用CMake构建PODOFO库。它需要一些外部库,如zlib、jpeg、openssl和freetype。我的cmake命令如下: cmake-g“mingw makefiles”_path=c:\users\abhishek\downloads\openSSL-0.9.8h-1-lib\lib-dpodofo_build_shared:bool=false.. 不知何

  • 我有一个项目被配置为: CMake项目 静态库A src(取决于B) 静态Lib B src(取决于Qt)

  • 问题内容: 如标题所示,我似乎无法使用OpenGL和Glut构建项目。 我收到OpenGL函数的未定义参考错误。 我试着做: 但这是行不通的。 有什么建议么? 问题答案: 会为您找到软件包,但不会将软件包链接到目标。 要链接到库,可以使用。此外,您还需要设置,以便链接器知道在哪里寻找东西。这是通过完成的。 一个执行此操作的示例如下所示: 如果对于您的项目是必要的,则可以考虑在之后进行测试,或使用,