如何在cmake项目中使用allegro5?
How to use allegro5 in a cmake project?
我正在尝试将 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})
我的main.c是:
#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 链接的应用程序的示例 CMakeLists.txt 文件。
除了对pkg_check_modules()
的误解外,你几乎已经掌握了。
pkg_check_modules()
的第一个参数是您选择的文字前缀。这将是 pkg_check_modules()
设置的所有变量的前缀。如果您选择了“foo”,则设置的变量将是 foo_LIBRARIES
、foo_INCLUDE_DIRS
、foo_CFLAGS
等
您选择了前缀“allegro-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()
中给出的前缀与您要使用的变量相匹配,您的项目就会正确构建。 (当然假设 Allegro 5 安装正确。)
我正在尝试将 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})
我的main.c是:
#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 链接的应用程序的示例 CMakeLists.txt 文件。
除了对pkg_check_modules()
的误解外,你几乎已经掌握了。
pkg_check_modules()
的第一个参数是您选择的文字前缀。这将是 pkg_check_modules()
设置的所有变量的前缀。如果您选择了“foo”,则设置的变量将是 foo_LIBRARIES
、foo_INCLUDE_DIRS
、foo_CFLAGS
等
您选择了前缀“allegro-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()
中给出的前缀与您要使用的变量相匹配,您的项目就会正确构建。 (当然假设 Allegro 5 安装正确。)