如何在cmake项目中使用allegro5?
我正试图将allegro5纳入cmake项目如何在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
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”,但在随后的命令中,您尝试使用varibalesallegro\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