CMAKE关于生成库文件的简单用法
1.本文主要针对某个具体实例给出,首先建立一个文件夹test,现在有以下几个文件:
test/useHello.cpp
#include "libHelloSLAM.h"
int main(int argc,char** argv)
{
printHello();
return 0;
}
test/include/libHelloSLAM.h
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
void printHello();
#endif
tset/src/libHelloSLAM.cpp
#include <iostream>
using namespace std;
void printHello()
{
cout<<"Hello SLAM!"<<endl;
}
2. 然后我们对于这几个文件建立test/CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
#创建工程文件
project(helloSLAM)
#头文件,意思是当前可执行程序所使用的头文件在include中
include_directories(${PROJECT_SOURCE_DIR}/include)
#添加可执行程序
add_executable(helloSLAM useHello.cpp)
#生成动态库.so文件,默认在build文件夹中
add_library(hello_shared SHARED ${PROJECT_SOURCE_DIR}/src/libHelloSLAM.cpp)
#生成静态库.a文件
#add_library(hello ${PROJECT_SOURCE_DIR}/src/libHelloSLAM.cpp)
#连接,将动态库链接到可执行文件
target_link_libraries(helloSLAM hello_shared)
#设置编译模式
set(CMAKE_BUILD_TYPE "Release" )
#生成文件到指定位置
#set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#install 安装文件到指定位置
install(TARGETS hello_shared LIBRARY DESTINATION /usr/local/lib)
install(FILES ${PROJECT_SOURCE_DIR}/include/libHelloSLAM.h DESTINATION /usr/local/include)
3. 创建test/build
1.第一步
cd build
cmake ..
2.第二步
make
运行正常,指定位置会生成相应文件