CMake:它没有正确的卷曲方式

时间:2015-10-24 21:50:18

标签: linux macos curl linker cmake

与朋友一起,我正在尝试修复一个可以在脚本语言构建中使用的工作CMake文件。

大多数情况下都有效。问题出在CURL上。

简而言之:它适合我,但不适合他。

的差异: - 我有OS X 10.11.1和默认的libcurl - 他有ubuntu 13.x和默认的libcurl

对我而言:/usr/lib/libcurl.dylib 对他而言:/usr/lib/x86_64-linux-gnu/libcurl.so

它适用于我,但在他身上,/usr/lib/x86_64-linux-gnu/文件夹似乎没有被注意到。

基本上,我们看到很多连锁错误;描述未定义的符号。似乎无法链接的那些:

  • curl_easy_getinfo
  • curl_version_info
  • curl_slist_free_all
  • curl_easy_duphandle
  • curl_easy_setopt
  • curl_easy_reset
  • curl_easy_perform
  • `curl_easy_cleanup``
  • curl_formfree
  • curl_slist_append
  • curl_easy_init

失败的构建命令:

/usr/bin/cmake -E cmake_link_script CMakeFiles/os.dir/link.txt --verbose=1
/usr/bin/c++       CMakeFiles/os.dir/os.cpp.o  -o os -rdynamic -lcurl -lmysqlclient -ldl libmpfd.a libobjectscript.a lib/libsoci_core.so.3.2.2 lib/libsoci_mysql.so.3.2.2 -lmysqlclient lib/libsoci_core.so.3.2.2 -lpthread -ldl -Wl,-rpath,/home/craft/Downloads/objectscript/build/lib: 

全部输出:http://pastebin.com/7dHCvDTe

我们使用的CMakeLists文件:http://pastebin.com/0sbzdWr4

我完全迷失了......我试过了:

  • ...使用link_directories
  • 添加库的目录
  • ...使用不同的find_package
  • ...利用curl-config --libs并在链接标志的末尾粘贴该输出

但他们都没有奏效。所以,如果有人可以在这里伸出援手,真的很棒。

我想知道的是:

  • 为什么CURL没有拿起图书馆?我只在他的命令中看到-lcurl - 但在我的Mac上,它实际上将完整的路径放到了dylib。
  • 我的CMakeLists文件中有什么错误阻止了CURL的工作?
  • 是否有尝试调试此类问题的一般建议?

0 个答案:

没有答案