在linux环境下编译
- usr/local/bin/libopenal.so
git clone https://github.com/JogAmp/openal-soft cd build cmake .. make sudo make install # 安装
- usr/local/bin/libalut.so
git clone https://github.com/vancegroup/freealut mkdir build cd build cmake .. sudo make install
在linux中非常顺利,都能编译通过
在windows下编译
openal的编译使用cmake可以正常编译通过,但是到了alut就出现了问题
find_package(OpenAL REQUIRED)
无法找到OpenAL,在linux中没有遇到这个问题是因为make install已经正确将OpenAl安装到了usr/local/bin
,并且在usr/local/bin/cmake
下有相应的make文件,保证cmake可以正常识别到。
windows下CMake如何正确find_packge模块呢?
其实cmake自身也有关于OpenAl的查找逻辑:
- cmake\share\cmake-3.25\Modules\FindOpenAL.cmake
find_path(OPENAL_INCLUDE_DIR al.h HINTS ENV OPENALDIR PATHS ~/Library/Frameworks /Library/Frameworks /opt [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] PATH_SUFFIXES include/AL include/OpenAL include AL OpenAL ) find_library(OPENAL_LIBRARY NAMES OpenAL al openal OpenAL32 HINTS ENV OPENALDIR PATHS ~/Library/Frameworks /Library/Frameworks /opt [HKEY_LOCAL_MACHINE\\SOFTWARE\\Creative\ Labs\\OpenAL\ 1.1\ Software\ Development\ Kit\\1.00.0000;InstallDir] PATH_SUFFIXES libx32 lib64 lib libs64 libs ${_OpenAL_ARCH_DIR} )
可以看到是从OPENALDIR
环境变量中查找,所以只需要环境变量中有指向包含al.h
、 OpenAl32.dll
的目录即可
设置环境变量后,一定要记得重启CMD环境,否则环境变量不生效
alut的注意事项
OpenGL有glut,同理OpenAL也有alut。
alut是动态库,注意alut.dll的输出路径:
引用alut的时候,记得alut.h
头文件,直接将alut的源码放到项目是不行的,因为alut的接口都声明了dll export
,所以不得不编译出dll后放到项目中。
alut本质上还是对openal的一层封装,只是简化了使用难度,因为openal本身也没有几个函数,所以alut的函数也不多,所以不建议使用alut,直接使用openal能够让自己对api更熟悉。