Это CFLAGS в Makefile.
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. Я много искал, но не могу найти ответ. Пожалуйста помоги.
Если вы используете find_package (Gtk2 …), вам вообще не нужно использовать pkg-config. CMake найдет правильные флаги для вас. Кроме того, это работает для операционных систем, таких как Windows, где pkg-config отсутствует.
ОДНАКО, если вы настаиваете на использовании pkg-config, сделайте следующее:
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-config —cflags’ в ваш CXX_FLAGS, а также гарантирует, что ваш исполняемый файл связан с библиотеками Gtk2 из ‘pkg-config —libs’
РЕДАКТИРОВАТЬ: Если вы не возражаете против некоторых дополнительных советов, библиотеки, которые предоставляет вам pkg-config, не входят в ‘CFLAGS’. Должна быть специальная переменная ‘LIBS’ (или любое другое похожее имя), которая содержит библиотеки, с которыми вы ссылаетесь.