C++ CMakeLists.txt

原创


1. 前言

在Ubuntu中对工程文件运行时,只用VSCode编译运行可能会无法链接到部分库,很容易出现:
Program" xxx " does not exist.
但是通过CMake编译就不会出现问题,所以本文介绍如何编写CMakelists。

2. 基础编法

定义CMake版本+项目名称+CMake标准+关联文件

cmake_minimum_required(VERSION 3.10)
project( project_name )
set(CMAKE_CXX_STANDARD 17)
add_executable(test main.cpp pro.h )
//pro.h
#include <iostream>
using namespace std;
class test
{
public:
	test(){};
	void test01(int a , int b)
    {
        cout << "a+b=" << a+b << endl;
    };
	~test(){};
};
void speak()
{
    cout << "im best" << endl;
}
//main.cpp
#include "pro.h"
int main()
{
    test a;
    a.test01(10,20);
    speak();
}

3.复杂编法

#前三个是必备的
cmake_minimum_required(VERSION 3.10)
project(project_name)
set(CMAKE_CXX_STANDARD 17)

if(UNIX)
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
	set(CMAKE_BUILD_RPATH "$ORIGIN")
endif(UNIX)
set(LINK_STATIC_BOOST ON)
set(Boost_USE_STATIC_LIBS        ON)
set(Boost_USE_MULTITHREADED      ON)

include_directories(${CMAKE_SOURCE_DIR})

#链接Eigen库
find_package (Eigen3 REQUIRED NO_MODULE)
include_directories( ${EIGEN3_INCLUDE_DIRS} )

#链接BOOST库
find_package(Boost REQUIRED COMPONENTS system filesystem thread date_time iostreams serialization chrono atomic regex program_options)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})

#基础编法的第四部分,应用程序,链接目标库,同时链接到库的相关应用文件
add_executable(test_spatialite  test_spatialite.cpp)
target_link_libraries(test_spatialite ${Boost_LIBRARIES} -lsqlite3 -lspatialite)

if(WIN32)
	add_subdirectory(win)
endif(WIN32)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值