CMakeLists.txt常见指令

demo1——单文件

只有一个main.cpp的情况

main.cpp

#include<iostream>

int main(int argc, char** argv)
{
    
    
	std::cout<<"hellosl"<<std::endl;

	return 0;
}

CMakeLists.txt

cmake_minimum_required( VERSION 2.8)
project(demo)
add_executable(demo main.cpp)

编译指令:(以下demo将不再提)

mkdir build
cd build
cmake ..
make

demo2——多文件

有main.cpp和pose.h、pose.cpp。

main.cpp

#include<iostream>
#include"pose.h"
using namespace std;

int main(int argc, char** argv)
{
    
    
	for(int i=0;i<argc;i++)
	{
    
    
		cout<<argv[i]<<endl;		
	}
	int answer = pose();
	cout<<"---------------"<<endl;
	cout<<answer<<endl;
	return 0;
}

注意:int main(int argc, char** argv)

pose.cpp

#include"pose.h"

int pose()
{
    
    
	int a = 6+3;
	return a;
}

pose.h

#ifndef POSE_H_
#define POSE_H_

int pose();
#endif

注意:# ifndef #define #endif使用

CMakeLists.txt

cmake_minimum_required( VERSION 2.8 )
project(pose)

add_executable(pose main.cpp)
add_library(poselib pose.cpp)  # 静态库
add_library(share_pose_lib SHARED pose.cpp)  # 动态库
target_link_libraries(pose poselib)

注意:
1)加上add_library(poselib pose.cpp)该语句后,会在build文件夹下生成libposelib.a静态库。也可以使用,也可使用add_library(poselib STATIC pose.cpp)
2)add_library(share_pose_lib SHARED pose.cpp) # 动态库,会在build文件夹下生成libposelib.so动态库
3)poselib和share_poselib名称不能相同

demo3——eigen

eigen.cpp

具体代码可参考:https://blog.csdn.net/weixin_41874898/article/details/121254989

CMakeLists.txt

cmake_minimum_required( VERSION 2.8 )
project(eigen_demo)
include_directories("/usr/include/eigen3")
add_executable(eigen_demo eigen.cpp)

eigen是个头文件库,只有h文件,没有cpp文件,在写cmake的时候,只有包含头文件include_directories,不用target_link_libraries。

demo4——sophus

sophus_demo.cpp

具体代码可参考:https://blog.csdn.net/weixin_41874898/article/details/121270562

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(sophus_demo)

# 为使用 sophus,您需要使用find_package命令找到它
find_package( Sophus REQUIRED)
include_directories(${
    
    Sophus_INCLUDE_DIRS})

add_executable(sophus_demo sophus_demo.cpp)
target_link_libraries(sophus_demo ${
    
    Sophus_LIBRARIES})

Guess you like

Origin blog.csdn.net/qq_46515446/article/details/121423562