我在使用cmake构建的github https://github.com/acgreek/ExtremeCUnit上编写/维护了一个小单元测试库。退房后,您可以通过'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?
您也可以向我发送拉取请求,以便您可以获得修复它的功劳。
答案 0 :(得分:9)
我只需要添加
target_link_libraries(ExtremeCUnit dl)
答案 1 :(得分:1)
if(CMAKE_DL_LIBS)
target_link_libraries(ExtremeCUnit ${CMAKE_DL_LIBS})
endif()