我有一个项目,使用automake来创建configure和所有相关的文件(我正在使用autoreconf命令来制作所有这些东西).因此,我正在尝试设置一些条件文件,以便在项目编译macOS(OS X),Windows或Linux时进行编译.但它失败了以下内容:
$ autoreconf -i ..
src/Makefile.am:30: error: LINUX does not appear in AM_CONDITIONAL
autoreconf: automake failed with exit status: 1
Run Code Online (Sandbox Code Playgroud)
包含错误的部分Makefile.am如下:
if OSX
butt_SOURCES += CurrentTrackOSX.h CurrentTrackOSX.m
endif
if LINUX
butt_SOURCES += currentTrack.h currentTrackLinux.cpp
endif
if WINDOWS
butt_SOURCES += currentTrack.h currentTrack.cpp
endif
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何检查操作系统是否为Linux?如果有可能,有没有更好的方法来检查automake中的操作系统?
tve*_*eeg 17
您可以直接在Makefile中检测它,或者在配置源文件中定义条件(可能configure.ac),因为您使用的是autoreconf:
# AC_CANONICAL_HOST is needed to access the 'host_os' variable
AC_CANONICAL_HOST
build_linux=no
build_windows=no
build_mac=no
# Detect the target system
case "${host_os}" in
linux*)
build_linux=yes
;;
cygwin*|mingw*)
build_windows=yes
;;
darwin*)
build_mac=yes
;;
*)
AC_MSG_ERROR(["OS $host_os is not supported"])
;;
esac
# Pass the conditionals to automake
AM_CONDITIONAL([LINUX], [test "$build_linux" = "yes"])
AM_CONDITIONAL([WINDOWS], [test "$build_windows" = "yes"])
AM_CONDITIONAL([OSX], [test "$build_mac" = "yes"])
Run Code Online (Sandbox Code Playgroud)
注:
host_os是指在目标系统上,所以如果你是交叉编译它设置OS条件正在编译的系统来.
| 归档时间: |
|
| 查看次数: |
3263 次 |
| 最近记录: |