【问题标题】:CMake add -ldl at end of link stage of add_libraryCMake在add_library的链接阶段结束时添加-ldl
【发布时间】:2013-12-06 12:33:32
【问题描述】:

我在 github https://github.com/acgreek/ExtremeCUnit 上编写/维护了一个使用 cmake 构建的小型单元测试库。您可以在签出后通过“cmake test”签出并运行一些测试。它在 Cygwin 和 Ubuntu(我唯一的家庭系统)上运行良好。我最近升级到 ubuntu 13.10 并且该库停止与测试二进制文件链接,因为 ExtremeUnitC 库现在需要在链接阶段(通过 add_library)与 -ldl 链接,另外 -ldl 需要添加到链接的末尾行(似乎对 gcc 进行了一些更改)。在之前的 Ubuntu 版本中,在测试对象与 ExtremeUnitC 库链接之前,add_library 目标不需要 -ldl

基本上我需要的是make VERBOSE=10的结果,当它进入下一个阶段时

Linking C shared library libExtremeCUnit.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/ExtremeCUnit.dir/link.txt --verbose=10
/usr/bin/gcc  -fPIC -Wall -Wextra -ggdb3 -fPIC  -ldl   -shared -Wl,-    soname,libExtremeCUnit.so -o libExtremeCUnit.so CMakeFiles/ExtremeCUnit.dir/main.c.o CMakeFiles/ExtremeCUnit.dir/runner.c.o CMakeFiles/ExtremeCUnit.dir/util.c.o CMakeFiles/ExtremeCUnit.dir/findtest_names.c.o CMakeFiles/ExtremeCUnit.dir/assert_support.c.o 

我需要它,

Linking C shared library libExtremeCUnit.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/ExtremeCUnit.dir/link.txt --verbose=10
/usr/bin/gcc  -fPIC -Wall -Wextra -ggdb3 -fPIC  -ldl   -shared -Wl,-    soname,libExtremeCUnit.so -o libExtremeCUnit.so CMakeFiles/ExtremeCUnit.dir/main.c.o CMakeFiles/ExtremeCUnit.dir/runner.c.o CMakeFiles/ExtremeCUnit.dir/util.c.o CMakeFiles/ExtremeCUnit.dir/findtest_names.c.o CMakeFiles/ExtremeCUnit.dir/assert_support.c.o -ldl

我应该如何以干净/便携的方式编辑我的 CMakeList.txt?

您也可以向我发送拉取请求,以便获得修复它的功劳。

【问题讨论】:

    标签: c ubuntu cmake shared-libraries


    【解决方案1】:

    我只需要添加

    target_link_libraries(ExtremeCUnit dl)
    

    【讨论】:

    【解决方案2】:
    if(CMAKE_DL_LIBS)
        target_link_libraries(ExtremeCUnit ${CMAKE_DL_LIBS})
    endif()
    

    【讨论】:

    • 它可以在窗户上饮用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2023-02-24
    相关资源
    最近更新 更多