如何在cmake项目中使用allegro5?

如何在cmake项目中使用allegro5?,cmake,allegro5,Cmake,Allegro5,我正试图将allegro5纳入cmake项目 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_directorie

我正试图将allegro5纳入cmake项目

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})
我的主要意见是:

#include <allegro5/system.h>

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

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

除了对的误解之外,您几乎拥有了它

pkg\u check\u modules()
的第一个参数是您选择的文字前缀。这将是
pkg\u check\u modules()
设置的所有变量的前缀。如果您选择了“foo”,将设置的变量将是
foo\u库
foo\u INCLUDE\u DIRS
foo\u CFLAGS
,等等

您选择了前缀“allegro-5”,但在随后的命令中,您尝试使用varibales
allegro\u库
ALLEGRO5\u INCLUDE\u DIRS
。这些变量没有设置,因为实际需要的变量是
allegro-5_库
allegro-5_INCLUDE_DIRS
。将这三个命令更改为:

pkg_检查_模块(ALLEGRO5需要allegro-5)
目标链接库(应用程序${ALLEGRO5\u库})
目标目录(应用程序公共${ALLEGRO5\u include\u DIRS})
或:

包装检查模块(allegro-5要求allegro-5) 目标链接库(应用程序${allegro-5链接库}) 目标目录(应用程序公共${allegro-5\u include\u DIRS})
一旦
pkg\u check\u modules()
中给出的前缀与要使用的变量匹配,项目将正确生成。(当然,假设Allegro 5安装正确。)

非常感谢您的解释!
main.c:(.text+0x14): undefined reference to `al_install_system'
collect2: error: ld returned 1 exit status