如何配置Clion以编译gtkmm项目

5

我已经从GTK复制了一个样例项目。

#include <gtkmm.h>

int main(int argc, char *argv[])
{
    auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");

    Gtk::Window window;
    window.set_default_size(200, 200);

    return app->run(window);
}

当直接从终端编译时,它可以很好地工作:

g++ main.cpp -o simple `pkg-config gtkmm-3.0 --cflags --libs`

但是,当我尝试使用Clion进行编译时,它会显示以下内容。
fatal error: gtkmm.h: No such file or directory
 #include <gtkmm.h>

我的CMakeLists.txt看起来像这样:

cmake_minimum_required(VERSION 3.8)
project(songbook)

set(CMAKE_CXX_STANDARD 17)

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)

include_directories(${GTK3_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS})

add_definitions(${GTK3_CFLAGS_OTHER})

set(SOURCE_FILES main.cpp)
add_executable(songbook ${SOURCE_FILES})

target_link_libraries(songbook ${GTK3_LIBRARIES})

我做错了什么?

1个回答

9

感谢https://github.com/DreaminginCodeZH/gtkmmproject的帮助,问题已经解决!最终的CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.8)
project(songbook)

set(CMAKE_CXX_STANDARD 17)
find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0)

include_directories(${GTKMM_INCLUDE_DIRS})
link_directories(${GTKMM_LIBRARY_DIRS})

set(SOURCE_FILES main.cpp MainWindow.cpp MainWindow.h)
add_executable(songbook ${SOURCE_FILES})
target_link_libraries(${CMAKE_PROJECT_NAME} ${GTKMM_LIBRARIES})

3
CMake 3.6及更高版本支持pkg_check_modules命令的IMPORTED_TARGET标志。使用该标志后,通过该命令使用结果非常简单:target_link_libraries(${CMAKE_PROJECT_NAME} PkgConfig :: GTKMM)(而不是使用以GTKMM为前缀的变量)。有关在CMake中使用pkg-config的一般用法,请参阅这个问题 - Tsyvarev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接