gpt4 book ai didi

linux - 如何使用 cmake 将 gecode 作为外部库包含在我的 c++ 项目中?

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:28 24 4
gpt4 key购买 nike

我是 CMake 新手,需要一些关于一个简单问题的指导:我按照 this link 在我的 Ubuntu 18.04 机器中从源代码构建了gecode 。该库安装在 /opt/gecode-release-6.2.0 目录中。我有一个C++简单项目,其源代码使用gecode库函数,并且该项目是使用CMake构建的。但是计算机似乎找不到gecode的安装位置。

我在我的CMakeLists.txt中尝试了以下操作,希望能够正确定位gecode库,但没有一个起作用:

  • include_directories(${LD_LIBRARY_PATH})
  • find_library(GECODE_LIB 地理编码)
  • link_directories(${LD_LIBRARY_PATH})
  • include_directories(/opt/gecode-release-6.2.0)

error message when "make" the c++ project

my current non-working CmakeLists.txt

最佳答案

Gecode 是一个相当复杂的库,具有各种“子库”或组件,因此我想提供一种替代方法来直接在 CMake 文件中添加查找和链接命令。

Gecode可以用作单独的CMake package 。我不会详细说明这意味着什么,但是一旦将 Gecode 定义为包,您就可以使用 find_package() 函数来查找并链接到 Gecode(例如,find_package(Gecode 6.0 COMPONENTS Driver Kernel) 至少需要 Gecode 版本 6,并且需要驱动程序和内核组件)。由于 Gecode 不作为 CMake 包提供,因此要将 Gecode 视为包,您必须定义一个查找模块。可以在 MiniZinc 存储库中找到功能齐全的地理编码查找模块:https://github.com/MiniZinc/libminizinc/blob/master/cmake/modules/FindGecode.cmake该查找模块将包含查找 Gecode 的指令,并将定义导入的目标和变量,以及库所在位置和关联头文件的信息。

将目标 test 与 Gecode 链接的简单示例如下所示:

# Add the place of the find module to the module path
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# Find Gecode
find_package(Gecode 6.0 REQUIRED COMPONENTS Driver Int Kernel Search)
# Link Gecode to target test
target_link_libraries(test Gecode::Driver Gecode::Int Gecode::Kernel Gecode::Search)

请注意,所需的组件会根据您的应用程序而有所不同。还可以使用 find 模块定义的 GECODE_INCLUDE_DIRSGECODE_LIBRARIES ;但是,如果您随后将库导出为 CMake 包,这可能会给您带来问题。

免责声明:我目前维护 MiniZinc 项目的 CMake 设置。

关于linux - 如何使用 cmake 将 gecode 作为外部库包含在我的 c++ 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250212/

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