首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cmake项目中使用allegro5?

如何在cmake项目中使用allegro5?
EN

Stack Overflow用户
提问于 2021-06-06 15:03:04
回答 1查看 382关注 0票数 1

我正在尝试将allegro5包含在cmake项目中。

代码语言:javascript
复制
find_package(PkgConfig REQUIRED)

include_directories(${PROJECT_SOURCE_DIR})
add_executable(app main.c)

pkg_check_modules(allegro-5 REQUIRED allegro-5)
target_link_libraries(app ${ALLEGRO5_LIBRARIES})
target_include_directories(app PUBLIC ${ALLEGRO5_INCLUDE_DIRS})

我的主要目的是:

代码语言:javascript
复制
#include <allegro5/system.h>

int main()
{
    al_init();
    return 0;
}

但是,当我运行cmake --build .时,我会得到以下错误:

代码语言:javascript
复制
main.c:(.text+0x14): undefined reference to `al_install_system'
collect2: error: ld returned 1 exit status

我正在寻找一个与allegro5链接的应用程序的示例allegro5文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-06 21:22:25

除了对pkg_check_modules()的误解之外,你几乎可以得到它。

pkg_check_modules()的第一个参数是您选择的文字前缀。这将是pkg_check_modules()设置的所有变量的前缀。如果您选择了"foo",那么所设置的变量将是foo_LIBRARIESfoo_INCLUDE_DIRSfoo_CFLAGS等。

您选择了前缀“allero-5”,但是在随后的命令中,您尝试使用变量ALLEGRO_LIBRARIESALLEGRO5_INCLUDE_DIRS。这些变量没有设置,因为您实际上想要的变量是allegro-5_LIBRARIESallegro-5_INCLUDE_DIRS。将这3个命令更改为:

代码语言:javascript
复制
pkg_check_modules(ALLEGRO5 REQUIRED allegro-5)
target_link_libraries(app ${ALLEGRO5_LIBRARIES})
target_include_directories(app PUBLIC ${ALLEGRO5_INCLUDE_DIRS})

或者:

代码语言:javascript
复制
pkg_check_modules(allegro-5 REQUIRED allegro-5)
target_link_libraries(app ${allegro-5_LIBRARIES})
target_include_directories(app PUBLIC ${allegro-5_INCLUDE_DIRS})

一旦在pkg_check_modules()中给出的前缀与您想要使用的变量匹配,您的项目将正确构建。(当然,假设Alle格罗5安装正确。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67860519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档