LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 914|回复: 4

怎样进行条件编译?

[复制链接]
发表于 2006-10-29 23:00:21 | 显示全部楼层 |阅读模式
我想实现:如果系统有alsa库,就编译含有alsa的一段代码,否则编译含有oss的一段代码,应该怎么办?
如果用Makefile,该怎样写?
发表于 2006-10-30 09:47:48 | 显示全部楼层
这东西一般不写在Makefile里,而是在configure脚本里,看看mplayer的configure脚本就明白了。它是写段测试alsa的C代码,必须要include alsa的头文件,然后执行alsa的一个什么函数,然后gcc编译它通过shell返回值,如果为0,表示编译成功,那么就说明alsa可用。oss也是同样的道理。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-30 11:13:04 | 显示全部楼层
看来只能用autotool了,那么用autotool的话就应该写在configure.in文件中?
回复 支持 反对

使用道具 举报

发表于 2006-10-30 13:20:35 | 显示全部楼层
in Makefile

  1. CFLAGS+=-DALSA
复制代码



in filename.c


  1. #ifdef ALSA
  2.       code concerning alsa
  3. #endif

  4. #ifndef ALSA
  5.       code concerning oss
  6. #endif
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-11-2 17:01:33 | 显示全部楼层
Post by dyte300
看来只能用autotool了,那么用autotool的话就应该写在configure.in文件中?
是写configure.ac文件。AC_CHECK_LIB(LIBRARY, FUNCT, [ACT-IF-FOUND], [ACT-IF-NOT])。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表