LINUX.ORG.RU

cmake + gtk


0

1

Скажите пожалуйста, что нужно добавить в CMakeLists.txt, чтобы cmake нашел gtk библиотеки? А то при компиляции ругается:

Scanning dependencies of target HardInform
[ 33%] Building C object CMakeFiles/HardInform.dir/src/main.c.o
In file included from /home/netcat/HardInform/src/main.c:1:0:
/home/netcat/HardInform/src/main.h:2:21: fatal error: gtk/gtk.h: Нет такого файла или каталога
compilation terminated.
make[2]: *** [CMakeFiles/HardInform.dir/src/main.c.o] Ошибка 1
make[1]: *** [CMakeFiles/HardInform.dir/all] Ошибка 2
make: *** [all] Ошибка 2

Плюс ко всему, при запуске «cmake ./», выдает вот что:
-- Some or all of the gtk libraries were not found. (missing:  GTK2_GLIBCONFIG_INCLUDE_DIR) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/netcat/HardInform

Пробовал установить все пакеты, связанные с glib, но результат тот же. Вот файл CMakeLists.txt:
cmake_minimum_required (VERSION 2.8)
set (PROJECT HardInform)
project (${PROJECT})

set (SOURCES 
    ./src/main.c
    ./src/cpu.c
    ./src/callbacks.c)

find_package(GTK2 REQUIRED)
add_executable(${PROJECT} ${SOURCES})
target_link_libraries (${PROJECT} ${GTK2_LIBRARIES})

★★

А -dev(в РХ-подобных -devel) пакеты ставил?

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

Кстати, есть баг в cmake 2.8.3 для ubuntu natty narwhal, который вызывает то, о чем я говорил. Я собрал из исходников версию 2.8.4, но ничего не изменилось.

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

Не вижу где ты выставляешь флаги компиляции. Это не баг, а cmakelists кривой.

Reset ★★★★★ ()
Ответ на: комментарий от kim-roader

а я вот так делал


include_directories (
  ${GTK2_INCLUDE_DIRS}
  )

jeuta ★★★★ ()

Только это:

find_package(GTK2 REQUIRED)
, если специфичных пакетов не надо

Eddy_Em ☆☆☆☆☆ ()

И, кстати, ${GTK2_LIBRARIES} не нужно.

Eddy_Em ☆☆☆☆☆ ()

Я все перепробовал, но cmake все равно не может найти GTK2_GLIBCONFIG_INCLUDE_DIR

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

А что за дистрибутив такой, который файлы в неправильные места распихивает?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от netcat

дык там либы из /usr/lib перенесли в /usr/lib/x86-.... и всё сломали

бубунтопроблемы

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

Это костыль. Правильный путь — не использовать FindGTK2, а использовать FindPkgConfig.

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

А вы думаете, если у них в бубунтах кривой cmake, то .pc-файлы правильные? Что-то сомневаюсь :)

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

.pc файлы правильные, я проверил только что

вообще когда 11.04 выходила, то в рассылке cmake'а была ругань на этих уродов, которые вдруг сделали пути не как у всех

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

Я задумывался о переходе на другой дистр, но пока не решил на какой

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

Для разработки, насколько я понял, единственным верным дистрибутивом является джента: ведь там с подобными «косяками» элементарно пакеты собираться не будут...

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от netcat

На Федору. Для разработки она отлично подходит.

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

Gentoo это слишком круто для 14-летнего школоло. А вот насчет Федоры я подумаю.

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

Уже поставил Федору. На ней и останусь. Неплохой дистр.

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

> в рассылке cmake'а была ругань на этих уродов, которые вдруг сделали пути не как у всех

это как? не все ли равно, какие пути, если .pc корректный?

ananas ★★★★★ ()

Поставил себе Федору, теперь при сборке выдает следующее:

canning dependencies of target HardInform
[ 33%] Building C object CMakeFiles/HardInform.dir/src/main.c.o
[ 66%] Building C object CMakeFiles/HardInform.dir/src/cpu.c.o
/home/netcat/HardInform/src/cpu.c: В функции «cpu_temperature»:
/home/netcat/HardInform/src/cpu.c:35:18: предупреждение: в присваивании целое преобразуется в указатель без приведения типа [по умолчанию включена]
/home/netcat/HardInform/src/cpu.c:38:21: предупреждение: в присваивании целое преобразуется в указатель без приведения типа [по умолчанию включена]
[100%] Building C object CMakeFiles/HardInform.dir/src/callbacks.c.o
make[2]: *** Нет правила для сборки цели `/usr/lib/i386-linux-gnu/libfreetype.so', требуемой для `HardInform'.  Останов.
make[1]: *** [CMakeFiles/HardInform.dir/all] Ошибка 2
make: *** [all] Ошибка 2

Содержимое CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
set (PROJECT HardInform)
project (${PROJECT})

set (SOURCES 
    ./src/main.c
    ./src/cpu.c
    ./src/callbacks.c
)
set (HEADERS
./src/cpu.h
./src/callbacks.h)

find_package(GTK2 REQUIRED)
include_directories(${GTK2_INCLUDE_DIRS})
add_executable(${PROJECT} ${HEADERS} ${SOURCES})
target_link_libraries (${PROJECT} ${GTK2_LIBRARIES} sensors)
file(GLOB HARDINFORM_EXECUTABLE HardInform)
install (FILES ${HARDINFORM_EXECUTABLE} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
file(GLOB HARDINFORM_UI ./data/HardInform.glade)
install (FILES ${HARDINFORM_UI} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/HardInform)

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

откуда это /usr/lib/i386-linux-gnu/libfreetype.so ? похоже на то, что ты не очистил CMakeCache.txt

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

> FindGTK2 не использует .pc

а с чем это связано, если не секрет? в pkg-config, по мнению разработчиков cmake, присутствует фатальная ошибка?

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

вообще логично было бы сделать так

if (WIN32)
 .... search registry ....
else ()
 .... pkg-config ....
endif ()

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