cmake输出库至指定目录
时间: 2023-11-05 10:58:46 浏览: 184
可以使用CMake中的`CMAKE_LIBRARY_OUTPUT_DIRECTORY`变量来指定库文件的输出路径。例如:
```
# 指定输出路径为build/lib
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
# 生成库文件
add_library(mylib SHARED mylib.cpp)
```
在上面的示例中,我们将库文件输出到`build/lib`目录下,同时生成一个名为`mylib`的共享库。
相关问题
cmake 指定动态库输出路径
在CMake中,可以通过`CMAKE_LIBRARY_OUTPUT_DIRECTORY`命令来指定动态库(共享库)的输出路径。具体步骤如下:
1. 在CMakeLists.txt文件中,使用`set`命令来设置`CMAKE_LIBRARY_OUTPUT_DIRECTORY`变量,指定动态库输出路径。例如,假设我们希望将动态库输出到build目录下的lib文件夹中,可以在CMakeLists.txt中添加如下代码:
```cmake
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
```
2. 然后,编译项目时,CMake会根据设置的输出路径和目标类型自动生成动态库,并将其存储在指定的输出路径下。通过以下命令进行编译:
```shell
mkdir build
cd build
cmake ..
make
```
在编译完成后,动态库将会生成在指定的输出路径下的lib文件夹内。
如果希望在多个平台上设置不同的输出路径,可以根据平台类型来进行条件判断,例如:
```cmake
if(WIN32)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/win32)
elseif(APPLE)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/macos)
elseif(UNIX)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/linux)
endif()
```
这样,根据不同平台的设置,生成的动态库将会分别输出到相应的路径下。
总之,通过在CMakeLists.txt文件中设置`CMAKE_LIBRARY_OUTPUT_DIRECTORY`变量,我们可以很方便地指定动态库的输出路径,使得生成的动态库能够按照我们的需求存储在指定的位置上。
CMAKE 输出路径设置
在使用 CMake 构建工程时,可以通过以下两个命令来设置输出路径:
1. CMAKE_BINARY_DIR:指定 CMake 构建的二进制文件所在的目录(即可执行文件、库文件等生成的位置)。
```cmake
set(CMAKE_BINARY_DIR ${PROJECT_SOURCE_DIR}/build)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
```
在这里,我们将生成的可执行文件和库文件都放在了 `${PROJECT_SOURCE_DIR}/build` 目录下。如果不设置 `EXECUTABLE_OUTPUT_PATH` 和 `LIBRARY_OUTPUT_PATH`,则二进制文件会默认放在 `${CMAKE_BINARY_DIR}/bin`,库文件会默认放在 `${CMAKE_BINARY_DIR}/lib`。
2. CMAKE_INSTALL_PREFIX:指定 CMake 安装生成的文件所在的目录。
```cmake
set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/install)
install(TARGETS target1 target2
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/static)
```
在这里,我们将生成的可执行文件和库文件都放在了 `${PROJECT_SOURCE_DIR}/install` 目录下。使用 `install` 命令可以将生成的文件安装到指定的目录下。其中,`RUNTIME` 表示可执行文件,`LIBRARY` 表示动态库文件,`ARCHIVE` 表示静态库文件。`DESTINATION` 指定安装的目标路径。
阅读全文