cmake 没有找到我的 allegro 包含和 llibs 所以编译时错误

Posted

技术标签:

【中文标题】cmake 没有找到我的 allegro 包含和 llibs 所以编译时错误【英文标题】:cmake didn't find my allegro includes and llibs so compile time error 【发布时间】:2011-11-29 16:51:59 【问题描述】:

我正在尝试设置我的代码以使用 allegro libray,我正在使用 mandriva 下的 KDEV4,我安装了 allegro-dev 包。然后在KDevelop中使用allegro函数时,它会显示文档,所以他肯定找到了库。

但是,当我编译我的源代码时,我得到了allegro_init() 未声明错误,所以我检查了CMakeLists.txt 文件,我认为问题就在那里:

project(game)
add_executable(game main.cpp)

我应该写什么给 cmake 来查找和链接库?

我有一个常规安装位置:

包含在/usr/include 和库在/usr/lib

我在 KDE 4.6.5 mandriva 2011 free 下安装了 allegro 4.4,cmake 2.8.4。

如果不是很明显,我的问题是我的 CMakeLists.txt 在包含 allegro 的情况下应该是什么样子。

【问题讨论】:

【参考方案1】:

那可能是您忘记指定包含路径或库路径。 如果你的 allegro 的头文件位于 /usr/local/allegro/include ,以及名称为 liballegro.a 的 allegro 的 lib 文件位于 /usr/local/allegro/lib 添加以下脚本也许可以解决您的问题。

INCLUDE_DIRECTORIES(
/usr/local/allegro/include
)

LINK_DIRECTORIES(
   /usr/local/allegro/lib
) 

TARGET_LINK_LIBRARIES(game
liballegro.a 
)

【讨论】:

【参考方案2】:

一种可能的方法是这样做。

项目(游戏)

add_executable(游戏 main.cpp)

target_link_libraries(game -llibrary)

其中 library 是您需要链接到可执行文件的库的名称。

在你的情况下,我认为它应该是 libalegro 或类似的东西。

我想有更好的方法,但我对 Cmake 不是很有经验。

最好的问候。

【讨论】:

【参考方案3】:

实际上我发现这样做的正确方法是在 cmake 中添加一个 CXX 标志:

kdev options 

并使用'allegro-settings --libs' 将返回包含和.O 的正确位置

和.a预编译

对不起大家,谢谢,但我会支持你们所有人

【讨论】:

您能再澄清一下吗?谢谢。 真的不清楚你的意思是什么以及它是如何实现的。 命令 'allegro-settings --libs' 将返回正确的库路径 您能说一下您添加到 CMakeLists.txt 中的内容吗?我不太明白你的回答。

以上是关于cmake 没有找到我的 allegro 包含和 llibs 所以编译时错误的主要内容,如果未能解决你的问题,请参考以下文章

我的 CMakeLists 有问题吗?

在其他计算机上运行 Allegro 5

如何知道 CMake 找到的库版本?

allegro安装后无法定位输入点

在 CMake 中链接 MySQL 库

allegro 有找到cmlib.dll,因此这个应用程序未能启动