cmake - 使用CMake编译Vala项目

标签 cmake vala

我想用 CMake 编译一个依赖 libappindicator 的 Vala 项目。

但是,使用以下输出来中止:

Linking C executable calm
CMakeFiles/calm.dir/src/CalmWindow.c.o: In function `__lambda6_':
CalmWindow.c:(.text+0x5b8): undefined reference to `app_indicator_set_status'
CMakeFiles/calm.dir/src/CalmWindow.c.o: In function `calm_calm_indicator_construct':
CalmWindow.c:(.text+0x6ee): undefined reference to `app_indicator_new'
CalmWindow.c:(.text+0x746): undefined reference to `app_indicator_set_status'
CalmWindow.c:(.text+0x76c): undefined reference to `app_indicator_set_attention_icon'
CalmWindow.c:(.text+0xe87): undefined reference to `app_indicator_set_menu'
collect2: ld gab 1 als Ende-Status zurück
make[2]: *** [calm] Fehler 1
make[1]: *** [CMakeFiles/calm.dir/all] Fehler 2
make: *** [all] Fehler 2

我的 CMakeLists.txt 有问题吗?

此命令有效:

valac -g --pkg gtk+-3.0 --pkg gstreamer-0.10 --pkg gstreamer-audio-0.10 --pkg granite --pkg appindicator3-0.1 CalmApp.vala Calm.vala CalmWindow.vala

最佳答案

这样就可以了:

[...]
###########
set(COMPILE_OPTIONS_VALA ${COMPILE_OPTIONS_VALA} -D USE_APPINDICATOR)
set(PACKAGES_VALA ${PACKAGES_VALA} "appindicator3-0.1")
###########

include(ValaPrecompile)
vala_precompile(VALA_C
        src/Calm.vala
        src/CalmApp.vala
        src/CalmWindow.vala
PACKAGES
        gtk+-3.0
        gstreamer-0.10
        gstreamer-audio-0.10
        appindicator3-0.1
CUSTOM_VAPIS
        vapi/config.vapi
OPTIONS
        --thread
)
[...]

关于cmake - 使用CMake编译Vala项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995122/

相关文章:

Vala 的 Makefile

c++ - 开罗图书馆和 Cmake

c++ - 如何检查 CMakeLists.txt 文件中是否定义了某些内容

visual-studio - 如何使用 Conan for CMake 指定 Visual Studio 编译器工具集?

c++ - 在 Boost.Test 和现代 CMake 中使用多个测试文件

parameter-passing - vala 是 "pass by reference"还是 "pass by value"?

c++ - 使用 cmake 时对 `glfwInit' 问题的 undefined reference Clion OpenGL

使用 Vala 和 GLib 的正则表达式

oop - 非 Objective-C 语言中 'receiver' 的等效术语

ubuntu - 在 pkg-config 搜索路径中找不到构建验证 : Package libvala-0. 12