【问题标题】:How to include `pkg-config --cflags --libs gtk+-2.0` in CXX_FLAGS of CMake如何在 CMake 的 CXX_FLAGS 中包含`pkg-config --cflags --libs gtk+-2.0`
【发布时间】:2015-09-10 16:33:51
【问题描述】:

这是 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 中。我搜索了很多,但找不到答案。请帮忙。

【问题讨论】:

    标签: c++ cmake pkg-config


    【解决方案1】:

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

    但是,如果您坚持使用 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 库链接

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

    【讨论】:

    • GTK_CFLAGS 应该包括“其他”选项,我相信。这与命令行选项--cflags--cflags-only-I(仅包括目录)、--cflags-only-other(仅不包括标志)匹配。因此,add_definitions(${GTK_CFLAGS}) 就足够了。
    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多