0

我想使用 conan 在 Linux 中处理项目的依赖关系C++/cmake/gcc并构建一个 ImGui C++ 演示,如下所示:使用 Elias Daler 的 imgui

我已经使用Boost柯南成功地处理了依赖关系,但是使用 ImGui-SFML 我遇到了链接错误。

conanfile.txt有以下说明:

[requires]
imgui-sfml/2.1@bincrafters/stable

[imports]
bin, *.so -> ./bin
lib, *.a -> ./lib

[generators]
cmake_find_package
cmake_paths
cmake

我将这些行添加到我CMakeLists.txt的与柯南一起工作:

include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) 

conan_basic_setup()

link_directories(${CONAN_LIB_DIRS}) 
target_link_libraries(my_project ${CONAN_LIBS})

然后,在里面build/我运行以下命令来构建库并安装依赖项:

conan install .. --build imgui-sfml

到目前为止,柯南很好,libImGui-SFML.a生成了(它也被复制到,build/lib因为[imports]我添加了link_directories()指令,但我认为不应该需要副本)。

然后,我生成makefile

cmake ..

最后,当我尝试构建项目时

cmake --build ./

我收到这些链接错误:

/usr/bin/ld: cannot find -lImGui-SFML
/usr/bin/ld: cannot find -lopenal
/usr/bin/ld: cannot find -lFLAC++
/usr/bin/ld: cannot find -lFLAC

柯南生成的库是静态的:

libFLAC.a
libFLAC++.a
libfreetype.a
libImGui-SFML.a
libogg.a
libopenal.a

这篇文章看起来很相关,但不适用于 ImGui:Installing gtest with conan

程序是否在寻找共享库?

我是否conanfile.txt在文件或文件中缺少某些配置CMakeLists.txt


编辑:

Conan version 1.25.2
4

1 回答 1

0

根据这个报告的问题,这个类似问题的解决方案,以及柯南的基本设置文档,在这种情况下,CMakeLists.txt应该包括:TARGET在设置中添加参数,以及调用conan_target_link_libraries而不是通常的target_link_libraries,如下:

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)
conan_target_link_libraries(${PROJECT_NAME})

所以conanfile.txt只需要这些说明:

[requires]
imgui-sfml/2.1@bincrafters/stable

[generators]
cmake
于 2020-08-08T01:49:35.683 回答