如何在 CMake 的 CXX_FLAGS 中包含 `pkg-config --cflags --libs gtk+-2.0`
How to include `pkg-config --cflags --libs gtk+-2.0` in CXX_FLAGS of CMake
这是 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 中。我搜索了很多但找不到答案。请帮忙。
如果您使用的是 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 中,并确保您的可执行文件针对 'pkg-config --libs'
中的 Gtk2 库 linked
编辑:如果您不介意一些额外的建议,pkg-config 为您提供的库不属于 'CFLAGS'。应该有一个特殊的 'LIBS'(或任何类似名称)变量来保存您 link 反对的库。
这是 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 中。我搜索了很多但找不到答案。请帮忙。
如果您使用的是 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 中,并确保您的可执行文件针对 'pkg-config --libs'
中的 Gtk2 库 linked编辑:如果您不介意一些额外的建议,pkg-config 为您提供的库不属于 'CFLAGS'。应该有一个特殊的 'LIBS'(或任何类似名称)变量来保存您 link 反对的库。