其实说到这里,我才发现,你可能压根还不知道如何开始一个项目。
当然最简单的办法之一,就是让半残的anjuta替你建立一个gtk项目的skeleton,然后把他扔一边,继续用你的vim,emacs去。
不过在这么多年之后,其实我已经不会写autotools的代码了,那么下面我就无聊来介绍下怎么用CMake和Gtk。
关于我曾经的CMake介绍,可以参考这里。
https://www.csslayer.info/wordpress/category/cmake/
有些人喜欢录视频写代码?这次录个视频好了。
代码下载:
P. S.
也许这篇文章会勾引出一些严重的autotools粉,例如啊glib/gtk的项目都是用autotools啊,glib/gtk项目用autotools集成好啊。我用了这么多年现在早忘了autotools 怎么写了,我写不出来,就这样。
构建脚本用什么写都没本质差别。照样有人用cmake生成GObjectIntrospection(附注:第一个这么干的当然不是我)。
一刷新又一篇~~4
GTK+的项目的确用autotools的优势比较大,官方提供了很多工具的。包括GIR的支持,提供了一些m4脚本。用其它的工具并非不可行(就如本文的例子),只是增加一些工作量和维护难度罢了。
@SuperCat 写习惯了cmake看着autotools隐隐蛋疼……
这么写的不看着更清爽吗?
gobject_introspection(
FILENAME Fcitx-1.0.gir
NSVERSION 1.0
INCLUDE Gio-2.0 GObject-2.0 GLib-2.0
PACKAGE_EXPORT fcitx-gclient
LIBRARY fcitx-gclient
SCANNER_ARGS –warn-all –add-include-path=${CMAKE_CURRENT_SOURCE_DIR}
COMPILER_ARGS “–includedir=${CMAKE_CURRENT_SOURCE_DIR}”
SYMBOL_PREFIXES fcitx
SOURCES ${FCITX_GCLIENT_SOURCES} ${FCITX_GCLIENT_HEADERS}
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Fcitx-1.0.gir DESTINATION ${GOBJECT_INTROSPECTION_GIRDIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Fcitx-1.0.typelib DESTINATION ${GOBJECT_INTROSPECTION_TYPELIBDIR})
这个其实真没有autotools那个简单,关键是GIR是有官方给的m4的……(如果没有情况就不一样了)。
其实autotools用下来感觉也还好,用熟了也没感觉太复杂。
@SuperCat 主要是看起来很清晰,不懂cmake你也能看懂这个,不是吗?
而且cmake大部分脚本都会自带使用文档注释在里面。
其實我想問怎麼搞 GNU gettext 和 Gtk-Doc
其实,我特别喜欢qmake那种可以配置得特别简单的……当然原因主要是我写不来大项目。
不行,我得吐槽視頻看起來相當不方便。