2015-02-15 4 views
0

извините за то, что беспокоило вас, но у меня возникла проблема с включением библиотек с Cmake. Я хотел включить библиотеку tgui в свой проект sfml, но я не знаю, как это сделать. Я несколько узнал, как включить библиотеку sfml, но я не мог найти, как включить библиотеку tgui, и все, что я пробовал и искал, не удалось.Связывание библиотеки TGUI с cmake

На их сайте описано, как его использовать, но не как его реализовать.

Вот CMake файл моего проекта (до SFML связей):

cmake_minimum_required(VERSION 2.8)  
project(AntWorld)  

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")  

set(SOURCE_FILES "main.cpp")  
add_executable(AntWorld ${SOURCE_FILES})  

# include_directories("${PROJECT_SOURCE_DIR}/*")  


# Define sources and executable  

set(EXECUTABLE_NAME "Run_AntWorld")  

add_executable(${EXECUTABLE_NAME} main.cpp)  



# Detect and add SFML  
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})  
find_package(SFML 2 REQUIRED system window graphics network audio)  
if(SFML_FOUND)  
    include_directories(${SFML_INCLUDE_DIR})  
    target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES})  

endif()  

хорошо, что нет рабочий код до сих пор.

я пытался адаптировать так, как это описывается в

www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file.

Это был самый многообещающий пост, но так или иначе я не мог понять, что они на самом деле пытались объяснить, поскольку они описывали пути и/или файлы, не включенные в их иерархию вообще (или я просто не получил его , но ошибки там, где есть путь).

Все остальное, что я пробовал, оказалось таким же захватывающим, как этот.

Ах, для библиотеки я попытался ссылке:

https://github.com/texus/TGUI

Вы можете скачать его на свой веб-сайт (https://tgui.eu/) я тоже пробовал с версии 0.6.7 (не-предкомпилированного версия) так как я на Linux с Clion. И если это проблема, что я могу сделать, чтобы заставить ее работать?

В любом случае, всякая помощь приветствуется, надеюсь, что я не беспокою вас, делая что-то важное.

ответ

0

Способ ссылки на TGUI почти идентичен тому, как вы ссылаетесь на SFML.

В вашей папке cmake_modules у вас, вероятно, уже есть файл FindSFML.cmake. Вам также нужно скопировать FindTGUI.cmake (его можно найти в TGUI_Path/cmake/Modules).

Для того, чтобы найти библиотеку TGUI вы бы просто позвонить find_package

find_package(TGUI 0.6 REQUIRED). 

Linking будет выглядеть следующим образом

target_link_libraries(target ${TGUI_LIBRARY} ${SFML_LIBRARIES}) 

Полный пример:

cmake_minimum_required(VERSION 2.8) 
project(TestProject) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) 

find_package(SFML 2 REQUIRED system window graphics network audio)  
find_package(TGUI 0.6 REQUIRED) 

if(NOT SFML_FOUND) 
    message(FATAL_ERROR "Could not find SFML") 
endif() 

if(NOT TGUI_FOUND) 
    message(FATAL_ERROR "Could not find TGUI") 
endif() 

add_executable(TestProject main.cpp) 
target_link_libraries(TestProject ${TGUI_LIBRARY} ${SFML_LIBRARIES}) 
+0

хорошо, спасибо, по крайней мере, теперь он возвращает только одну ошибку, которую вы, вероятно, можете мне помочь: «Ошибка: не удалось найти TGUI» (из FindTGUI.cmake). Я включил его в папку моего проекта, где я должен его найти? Я заглянул в нее и немного поработал, но это не сработало ... – blueBurningCoder

+0

@blueBurningCoder При создании tgui (следуя [учебнику linux] (https://tgui.eu/tutorials/v06/linux/), вы должны запустить «sudo make install» в конце, который установит tgui, чтобы его можно было найти автоматически. Если вы не хотите или не можете установить tgui (например, нет доступа root), тогда вы всегда можете установить переменную TGUI_ROOT в cmake в каталог tgui (который должен включать в себя подпапки lib и include).Но в этом случае вам также может понадобиться «include_directories (TGUI_Path/include)» в вашем сценарии cmake. Но установка TGUI правильно упрощает его использование. – texus

+0

Не знаю, почему я не нашел этот ... в любом случае, когда я его попробовал, он остановился на 38% со следующей ошибкой: /home/blueburningcoder/Downloads/TGUI/src/TGUI/EditBox. cpp: В функции-члене 'virtual void tgui :: EditBox :: mouseMoved (float, float)': /home/blueburningcoder/Downloads/TGUI/src/TGUI/EditBox.cpp:1172:69: error: 'class sf: : String 'не имеет имени с именем' substring '(и тому подобное) . . . make [2]: *** [src/TGUI/CMakeFiles/tgui.dir/EditBox.cpp.o] Ошибка 1 make [2]: *** Ожидание незавершенных работ .... make [1] : *** [src/TGUI/CMakeFiles/tgui.dir/all] Ошибка 2 сделать: *** [все] Ошибка 2 – blueBurningCoder

Смежные вопросы