开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 27 天,点击查看活动详情
在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更熟悉。