【问题标题】:How to configure Clion to compile gtkmm project如何配置Clion编译gtkmm项目
【发布时间】:2017-08-11 14:23:55
【问题描述】:

我从 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})

我做错了什么?

【问题讨论】:

    标签: c++ clion gtkmm


    【解决方案1】:

    感谢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})
    

    【讨论】:

    • CMake 3.6 及更高版本支持IMPORTED_TARGET 标志pkg_check_modules 命令。使用该标志使用该命令的结果非常简单:target_link_libraries(${CMAKE_PROJECT_NAME} PkgConfig::GTKMM)(而不是使用带有 GTKMM 前缀的变量)。另请参阅that question,了解 CMake 中 pkg-config 的一般用法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2023-03-14
    • 2020-08-17
    • 2020-12-05
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多