LINUX.ORG.RU

CMake как подключить GTK в проект?


0

1

Доброго всем времени суток, пытаюсь перенести проект на cmake, написал простенький скрипт:

cmake_minimum_required (VERSION 2.6) 
 
set (PROJECT sb) 
 
project (${PROJECT}) 

set (HEADERS 
	./src/main_window.h
	./src/main_window_cb.h
	./src/route.h
	./src/draw.h
	./src/values_window.h)
 
set (SOURCES 
	./src/main_window.c
	./src/main_window_cb.c
	./src/route.c
	./src/draw.c
	./src/values_window.c
	./src/sb.c) 
 
add_executable (${PROJECT} ${HEADERS} ${SOURCES} )

но при компиляции ругается что не «видит» хидеров и либов GTK, как их прописать в cmake? Погуглил, но что-то там какие-то страшные решения пишут, как я понял нужно какие-то модули использовать, FindGTK вроде, правда сумбурно себе всё это представляю, что и как, объясните а пальцах :)

★★★★★
Ответ на: комментарий от Torvus

О... сейчас всё собралось, после добавления target_link_libraries(${PROJECT} ${GTK2_LIBRARIES}) спасибо :) Интересно почему с ${GTK2_LIBRARIES} не получилось?

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Все правильно. Это я тупанул. В add_executable перечисляются файлы для компиляции цели. Соответственно, в target_link_libraries перечисляются библиотеки, от которых зависит цель сборки.

Torvus
()
Ответ на: комментарий от Torvus

А откуда берутся эти переменные, типа GTK2_LIBRARIES или GTK2_INCLUDE_DIRS, они экспортируются откуда-то... это к тому что, если я захочу подключить какую-либо свою библиотеку? ...

xterro ★★★★★
() автор топика
Ответ на: комментарий от Torvus

Там достаточно только SOURCES перечислить?

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Когда вы пишете find_library, cmake исполняет скрипт FindXXX.cmake, в котором и экспортируются все переменные. Стандартными являются XXX_FOUND, XXX_LIBRARIES, XXX_INCLUDE_DIRS, где XXX - имя библиотеки или модуля.

Чтобы cmake автоматически искал и подключал вашу собственную библиотеку, необходимо написать скрипт FindMyLibrary.cmake, а в CMakeLists.txt прописать

MyLibrary_dir(./) (кажется так, сейчас точно не вспомню)
find_library(MyLibrary)
Синтаксис Find скриптов неплохо описан в документации. Также будет полезно почитать стандартные скрипты

Torvus
()
Ответ на: комментарий от Torvus

Да, кстати, в add_executable не обязательно перечислять свои заголовочники.

Не обязательно, но полезно. В этом случае они будут включены в генерированный проект (по-крайней мере это актуально для Visual Studio). И ещё если проект планируется собирать под венды следует в ADD_EXECUTABLE после имени цели указывать WIN32 если приложение не консольное.

Begemoth ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.