我正在尝试将 libcurl 包含在我的大型 C++ 项目中,该项目是我使用 Visual Studio Code、CMake 和 gcc 在 Ubuntu 24.04 上构建的。
我单独下载并构建了 libcurl,并将 libcurl 文件夹以及构建的 liburl.so (以及 so.4 和 so.4.8.0 文件)放置在我的项目 dir/Engine/lib/curl 中。
我已将其添加到 gcc 命令中:
-L/home/ian/dev/hedgey/Engine/lib/curl/ -llibcurl
但我收到此错误:
[build] /usr/bin/ld.gold: error: cannot find -llibcurl
为了检查我的拼写,ls 在该目录上的输出:
ls /home/ian/dev/hedgey/Engine/lib/curl/libcurl*
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.pc
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.pc.in
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.so
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.so.4
/home/ian/dev/hedgey/Engine/lib/curl/libcurl.so.4.8.0
我做错了什么?
编辑
由于评论,我尝试使用更“cmakonic”的方法包含 libcurl:
add_subdirectory( ${libDir}/curl ${CMAKE_CURRENT_BINARY_DIR}/curl)
target_link_libraries(${TORQUE_APP_NAME} curl)
addInclude(${libDir}/curl/src)
我收到以下错误:
CMake 错误位于 Tools/CMake/torque3d.cmake:606 (target_link_libraries): EXECUTABLE 类型的目标“curl”不能链接到另一个目标。 可以仅链接到 INTERFACE、OBJECT、STATIC 或 SHARED 库,或者链接到 设置了 ENABLE_EXPORTS 属性的可执行文件。
编辑
我已将 target_link_libraries 替换为:
target_link_libraries(${TORQUE_APP_NAME} libcurl)
我现在得到了一个相当难以理解的错误:
[cmake] CMake Error:
[cmake] Running
[cmake]
[cmake] '/usr/bin/ninja' '-C' '/home/ian/dev/hedgey/build' '-t' 'recompact'
[cmake]
[cmake] failed with:
[cmake]
[cmake] ninja: error: build.ninja:25157: multiple rules generate /home/ian/dev/hedgey/My Projects/hedge/game/resolve
如果这个问题被删除,我不会感到惊讶,但如果没有(感谢所有评论者),我修复了这个问题。
我将其添加到根 CMakeLists.txt 中:
add_subdirectory(Engine/lib/curl)
然后将其添加到我的 .cmake 文件中:
target_link_libraries(${TORQUE_APP_NAME} CURL::libcurl)