Как использовать conan для обработки зависимости Im Gui -SFML в проекте cmake g cc в Linux? - PullRequest
0 голосов
/ 06 августа 2020

Я хочу обработать зависимости проекта C++/cmake/gcc в Linux, используя conan , и построить демонстрацию Im Gui C ++, как показано здесь: используя im gui by Elias Daler

Я использовал conan для успешной обработки Boost зависимостей, но с Im Gui -SFML у меня ошибка связывания.

My 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 для работы с conan:

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

Пока все хорошо с conan, создается libImGui-SFML.a (он также копируется в build/lib из-за [imports], хотя я думаю, что копия не должна (не требуется, поскольку я добавляю инструкцию link_directories()).

Затем я генерирую make-файлы

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

Библиотеки, сгенерированные conan, - это stati c:

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

Этот пост выглядит связанным, но не сработал для Im Gui: Установка gtest с помощью conan

Ищет ли программа разделяемые библиотеки?

Мне что-то не хватает конфигурация в файле conanfile.txt или CMakeLists.txt?

Изменить:

Conan version 1.25.2

1 Ответ

0 голосов
/ 08 августа 2020

Согласно этой сообщенной проблеме , это решение для аналогичного вопроса и документация conan basi c setup , в данном случае 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
...