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 所以编译时错误的主要内容,如果未能解决你的问题,请参考以下文章