如何在CMake的CXX_FLAGS中包含'pkg-config --cflags --libs gtk+-2.0'

cl25kdpy  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(178)

这是Makefile中的CFLAGS。

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中。我已经搜索了很多但是没有找到答案。请帮助。

7d7tgy0s

7d7tgy0s1#

如果你使用find_package(Gtk 2...),你根本不需要使用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中,并确保您的可执行文件与“pkg-config --libs”中的Gtk 2库相链接
编辑:如果你不介意一些额外的建议,pkg-config提供给你的库不属于'CFLAGS'。应该有一个特殊的'LIBS'(或任何类似的名称)变量来保存你链接的库。

相关问题