2011-11-29 48 views
0

我想设置我的代码使用allegro libray,我使用Mandriva下的KDEV4,我安装了allegro-dev软件包。然后当在KDevelop中使用allegro功能时,它显示文档,所以他肯定会找到该库。cmake没有找到我的allegro包括和llibs所以编译时错误

然而,当我编译我的源我得到allegro_init()未声明的错误,所以我检查了CMakeLists.txt文件,我认为这个问题是存在的:

project(game) 
add_executable(game main.cpp) 

我应该怎么写cmake的发现和链接库?

我有个大致的安装,其中:

  • 包括在/usr/include
  • 和库是在/usr/lib

我安装Allegro 4.4下KDE 4.6.5的Mandriva 2011免费,CMake的2.8 0.4。

如果不是很明显,我的问题是我的CMakeLists.txt应该看起来像包括快捷键一起编译。

回答

3

这也许你忘了指定包含路径或lib路径。 如果您的快板文件头文件位于/ usr/local/allegro/include 中,并且Allegro的lib文件名为liballegro.a,请在/ usr/local/allegro/lib中找到 添加以下脚本可能会解决您的问题。

INCLUDE_DIRECTORIES( 的/ usr /本地/快板/包括 )

LINK_DIRECTORIES( 的/ usr /本地/快板/ lib中 )

TARGET_LINK_LIBRARIES(游戏 liballegro。一 )

1

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

项目(游戏)

add_executable(游戏main.cpp中)

target_link_libraries(游戏-l {}库)

其中{}库的名称是,如果你需要的库链接到您的可执行文件

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

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

此致敬礼。

0

其实我发现,这样做的正确方法是一个CXX标志添加到使用

K设备选项

的cmake并使用了“快板的设置--libs”即会返回正确的地方的包括与.O

和.A precompilled

对不起你们,THX但我会给予好评大家

+0

能ÿ ou请澄清这一点多一点?谢谢。 –

+0

真的不清楚你是什么意思,以及它是如何实施的。 – tversteeg

+0

命令'allegro-settings --libs'将返回到lib的正确路径 – Qchmqs