a.h,a.cpp,使用Cmakelist.txt制作so库的时候,确保库和a.h文件输出到lib文件夹中
时间: 2024-11-23 08:40:02 浏览: 16
当你使用CMakeLists.txt创建SO(共享对象)库时,你需要确保头文件(a.h)以及编译后的库文件(outputted as .cpp or .o files)放置在lib目录下。以下是CMakeLists.txt的一般配置步骤:
1. 首先,在CMakeLists.txt文件顶部指定项目的名称和源文件的位置,例如:
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyLibrary)
set(SOURCE_DIR src)
add_library(MyLibrary SHARED ${SOURCE_DIR}/a.cpp)
```
2. 接下来,告诉CMake头文件位于何处,并将它们包含在库中:
```cmake
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(MyLibrary PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
```
这里`target_include_directories`会将src目录添加到目标库的搜索路径上。
3. 确定生成的目标位置为lib目录:
```cmake
install(TARGETS MyLibrary DESTINATION lib)
```
这行命令表示编译后的库(MyLibrary)应该安装到lib目录下。
4. 当你构建项目时,可以运行`cmake`命令生成Makefile或 Ninja build files,然后通过`make`命令生成库文件。CMake会在build目录下的指定位置自动生成库文件。
完整CMakeLists.txt示例:
```cmake
cmake_minimum_required(VERSION 3.0)
project(MyLibrary)
set(SOURCE_DIR src)
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
# 添加库
add_library(MyLibrary SHARED ${SOURCE_DIR}/a.cpp)
# 包含路径和安装路径
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(MyLibrary PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
install(TARGETS MyLibrary DESTINATION lib)
```
阅读全文