如何配置Clion编译gtkmm项目
Posted
技术标签:
【中文标题】如何配置Clion编译gtkmm项目【英文标题】:How to configure Clion to compile gtkmm project 【发布时间】: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)
我做错了什么?
【问题讨论】:
【参考方案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
的一般用法。以上是关于如何配置Clion编译gtkmm项目的主要内容,如果未能解决你的问题,请参考以下文章