Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何包括'pkg config--cflags--libs gtk+-CMake的CXX_标志中的2.0`_C++_Cmake_Pkg Config - Fatal编程技术网

C++ 如何包括'pkg config--cflags--libs gtk+-CMake的CXX_标志中的2.0`

C++ 如何包括'pkg config--cflags--libs gtk+-CMake的CXX_标志中的2.0`,c++,cmake,pkg-config,C++,Cmake,Pkg Config,这是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) p

这是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_标志中。我找了很多,但找不到答案。请提供帮助。

如果您使用的是find_软件包(Gtk2…),则根本不必使用pkg config。CMake将为您找到正确的标志。此外,这适用于Windows等不存在pkg配置的操作系统

但是,如果坚持使用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_标志中,并确保您的可执行文件是从“pkg config--libs”链接到Gtk2库的


编辑:如果您不介意一些额外的建议,pkg config提供给您的库不属于“CFLAGS”。应该有一个特殊的“LIBS”(或任何类似名称)变量来保存链接所针对的库

GTK\u CFLAGS
我认为应该包括“其他”选项。这与命令行选项
--cflags
--cflags-only-I
(仅包括目录),
--cflags-only-other
(仅包括非包含标志)相匹配。因此,
add_定义(${GTK_CFLAGS})
就足够了。