2015-09-10 1 views
4

Это CFLAGS в Makefile.Как включить `pkg-config -cflags -libs gtk + -2.0` в CXX_FLAGS из CMake

CFLAGS = -I/usr/include/libglade-2.0 -I/usr/include/gsl `pkg-config --cflags --libs gtk+-2.0` -lglade-2.0 -lglut -I/usr/local/include/dc1394 -ldc1394 

Я хочу использовать CMAKE, а не Makefile. Эта часть файла CMakeLists.txt, которую я написал.

find_package(PkgConfig REQUIRED) 
pkg_check_modules(GTK REQUIRED "gtk+-2.0") 

# Add the path to its header files to the compiler command line 
include_directories(${GTK_INCLUDE_DIRS}) 
link_directories(${GTK_LIBRARY_DIRS}) 

# Add any compiler flags it requires 
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GTK_CFLAGS}") 

# Add the makefile target for your executable and link in the GTK library 
target_link_libraries(${CMAKE_PROJECT_NAME} ${GTK_LIBRARIES}) 

# gtk and glade 
find_package(GTK2 2.10 REQUIRED gtk glade) 
if(GTK2_FOUND) 
    include_directories(${GTK2_INCLUDE_DIRS}) 
    target_link_libraries(${CMAKE_PROJECT_NAME} ${GTK2_LIBRARIES}) 
endif() 

Мой вопрос заключается в том, чтобы объединить

`pkg-config --cflags --libs gtk+-2.0` 

в CXX_FLAGS. Я много искал, но не могу найти ответ. Пожалуйста помоги.

ответ

3

Если вы используете find_package (Gtk2 ...), вам не нужно использовать pkg-config вообще. CMake найдет для вас правильные флаги. Кроме того, это работает для операционных систем, таких как Windows, где pkg-config нет.

ОДНАКО, если вы настаиваете на использовании PKG-конфигурации, выполните следующие действия:

find_package(PkgConfig) 
if (PKG_CONFIG_FOUND) 
    pkg_check_modules(GTK "gtk+-2.0") 
    if (GTK_FOUND)  
    target_link_libraries(yourexecutable ${GTK_LIBRARIES}) 
    add_definitions(${GTK_CFLAGS} ${GTK_CFLAGS_OTHER}) 
    endif() 
endif() 

Это добавляет выход «PKG-конфигурации --cflags» в ваших CXX_FLAGS, а также гарантирует, что ваш исполняемый файл связан против библиотек Gtk2 из «pkg-config -libs»

EDIT: Если вы не против дополнительных советов, библиотеки, которые pkg-config дает вам, не принадлежат «CFLAGS». Должна быть специальная переменная «LIBS» (или любое подобное имя), в которой хранятся библиотеки, с которыми вы ссылаетесь.

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

  • Нет связанных вопросов^_^