DBUILD_SHARED_LIBS
时间: 2024-11-10 15:14:55 浏览: 14
`DBUILD_SHARED_LIBS`是CMake中的一个变量,用于控制是否生成共享库(如.dll on Windows或.so on Unix-like systems)。默认情况下,如果未显式设置,CMake会根据平台和构建类型(如Debug、Release)自动选择是否生成共享库。
- 当`DBUILD_SHARED_LIBS`设为`ON`(或省略),CMake会生成可加载的共享库,这意味着库会被链接到其他程序作为动态链接,有利于减少程序大小和提高性能。
- 若设为`OFF`,则CMake倾向于生成静态库(`.a`, `.lib`或`.so`等),这种库包含所有依赖的代码,当应用程序需要该库时,会将整个库复制到其二进制文件中。
你可以通过以下方式设置这个变量:
```cmake
# 在CMakeLists.txt中设置
if (NOT DBUILD_SHARED_LIBS)
set(BUILD_TYPE Release) # 设置构建类型为非共享
endif()
# 或者在命令行上传递
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF .
```
相关问题
cmake..-DBUILD_SHARED_LIBS=ON
这是一个使用 CMake 构建项目时的选项。`-DBUILD_SHARED_LIBS=ON` 表示要构建共享库(即动态链接库),而不是静态库。
CMake 是一个跨平台的开源工具,可以自动生成用于构建项目的 Makefile 或 Visual Studio 解决方案等。它支持多种编程语言,包括 C、C++、Java 和 Python 等。CMake 的配置文件是 CMakeLists.txt,其中定义了项目的源代码、依赖项、编译选项以及输出文件等信息。通过调用 `cmake` 命令并指定 CMakeLists.txt 所在目录,即可生成 Makefile 或 Visual Studio 解决方案等,然后再使用相应的构建工具进行编译。
编译Mac libavif x86_64静态库
以下是编译Mac libavif x86_64静态库的步骤:
1. 安装Xcode和Homebrew。
2. 使用Homebrew安装必要的依赖项:
```
brew install cmake nasm yasm pkg-config
```
3. 从GitHub上克隆libavif仓库:
```
git clone https://github.com/AOMediaCodec/libavif.git
```
4. 切换到libavif目录:
```
cd libavif
```
5. 创建一个build目录并进入:
```
mkdir build && cd build
```
6. 配置编译选项:
```
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/install -DBUILD_SHARED_LIBS=OFF -DENABLE_TESTS=OFF
```
其中,`-DCMAKE_INSTALL_PREFIX=$PWD/install`将安装路径设置为当前目录下的`install`目录,`-DBUILD_SHARED_LIBS=OFF`表示编译静态库,`-DENABLE_TESTS=OFF`表示不编译测试代码。
7. 执行make命令编译:
```
make -j$(sysctl -n hw.logicalcpu)
```
8. 编译完成后,将编译生成的libavif静态库从`build/src/CMakeFiles/avif-static.dir`目录下复制到安装目录:
```
cp build/src/CMakeFiles/avif-static.dir/*.a install/lib/
```
9. 将库头文件复制到安装目录:
```
cp -R ../ext/avif/include/* install/include
```
10. 执行make install命令将库安装到系统中:
```
make install
```
11. 完成后,静态库文件和头文件均位于`install/lib`和`install/include`目录下。
阅读全文