【问题标题】:Cmake basic library linking problemCmake基本库链接问题
【发布时间】:2011-10-21 23:42:50
【问题描述】:

我在使用 CMake 链接库时遇到了一个简单的问题(我不太了解 CMake)。 我的配置如下:

project/src/CMakeLists.txt (with all .cpp and .h files)
project/support/linux/gmp/include/gmp.h
project/support/linux/gmp/include/gmpxx.h
project/support/linux/gmp/include/libgmp.a
project/support/linux/gmp/include/libgmpxx.a

如何在编译过程中包含库gmp? (我在 FIND_PACKAGE、INCLUDE_DIRECTORIES、TARGET_LINK_LIBRARIES、ADD_LIBRARY ... 命令之间迷路了)

非常感谢。

【问题讨论】:

    标签: linker cmake


    【解决方案1】:

    CMake 并不难理解。

    第一步

    使用find_package 定位库。

    find_package(GMP REQUIRED)
    

    第二步

    使用include_directories 包含库头文件。

    include_directories(${GOBJECT_INCLUDE_DIR})
    

    第三步

    使用target_link_libraries 将您的二进制文件与库链接。

    add_executable(ExecutableName Main.cpp)
    target_link_libraries(ExecutableName ${GOBJECT_LIBRARIES})
    

    【讨论】:

    • 谢谢,但我不明白的是如何找到变量 ${GOBJECT_INCLUDE_DIR} 和 ${GOBJECT_LIBRARIES} 的名称:它们是任意名称吗?它们是由用户在运行 cmake 时定义的吗?它们是由 find 包定义的吗?
    • 它们由 find_package 定义。见api.kde.org/cmake/modules.html#module_FindGMP
    • 再次感谢您。所以我现在的问题是:查找/链接没有 find_package 的库的命令是什么(例如名为 exlib 的个人库,目录为 exlib/include 和 exlib/lib)?
    • 我建议您针对该案例 (SOF) 不是讨论板打开一个新问题 - 我会回答它。
    • 这个答案没问题,假设用户在他们的系统上有 FindGMP.cmake 模块(默认情况下不存在)。
    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多