我正在尝试将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;
}但是,当我运行cmake --build .时,我会得到以下错误:
main.c:(.text+0x14): undefined reference to `al_install_system'
collect2: error: ld returned 1 exit status我正在寻找一个与allegro5链接的应用程序的示例allegro5文件。
发布于 2021-06-06 21:22:25
除了对pkg_check_modules()的误解之外,你几乎可以得到它。
pkg_check_modules()的第一个参数是您选择的文字前缀。这将是pkg_check_modules()设置的所有变量的前缀。如果您选择了"foo",那么所设置的变量将是foo_LIBRARIES、foo_INCLUDE_DIRS、foo_CFLAGS等。
您选择了前缀“allero-5”,但是在随后的命令中,您尝试使用变量ALLEGRO_LIBRARIES和ALLEGRO5_INCLUDE_DIRS。这些变量没有设置,因为您实际上想要的变量是allegro-5_LIBRARIES和allegro-5_INCLUDE_DIRS。将这3个命令更改为:
pkg_check_modules(ALLEGRO5 REQUIRED allegro-5)
target_link_libraries(app ${ALLEGRO5_LIBRARIES})
target_include_directories(app PUBLIC ${ALLEGRO5_INCLUDE_DIRS})或者:
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安装正确。)
https://stackoverflow.com/questions/67860519
复制相似问题