使用Vs Studio和Cmake生成C++库
在windows系统下,由于没有C++的编译器,想通过源码安装、加载C++的库存在不方便的地方。本文将介绍通过使用Vs Studio运用Cmake的方式,编译一个简单的自定义库,并进行加载、调用。
工程源代码
前提条件
- windows
- Vs Studio
- Cmake(Vs Studio默认环境)
编写并生成自定义库
add.h文件
#include <iostream>#ifdef SIMPLEDLL_EXPORT
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endifclass DLL_EXPORT Add {
public:Add();~Add();double summation(double a, double b);private:
};
add.cpp文件
#include "add.h"Add::Add() {}Add::~Add() {}double Add::summation(double a, double b) {return a + b;
}
CMakeLists.txt文件
# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
# 并包含子项目。
#
cmake_minimum_required (VERSION 3.8)project ("generate_lib")include_directories(include ${catkin_INCLUDE_DIRS}
)add_library(add SHAREDsrc/add.cpp
)
set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/install)
install(TARGETS add LIBRARY DESTINATION install)
install(FILES ${PROJECT_SOURCE_DIR}/include/add.h DESTINATION include)
依次点击Vs Studio中“全部重新生成”、“安装generate_lib”,在“install”目录下打包生成必要的.h、.dll、.lib文件
测试调用自定义库
- use_lib.h文件
// use_lib.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。#pragma once#include "add.h"#include <iostream>
#include <Windows.h>// TODO: 在此处引用程序需要的其他标头。
- use_lib.cpp文件
// use_lib.cpp: 定义应用程序的入口点。
//#include "use_lib.h"using namespace std;int main(int argc, char** argv) {Add add;double a = 6.6;double b = 3.4;std::cout << "a + b = " << add.summation(a, b) << std::endl;while (true) {//ros::Duration(1).sleep();Sleep(1000);std::cout << "RRRR" << std::endl;}return 0;
}
- CMakeLists.txt文件
# CMakeList.txt: use_lib 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)project ("use_lib")include_directories(include ${catkin_INCLUDE_DIRS}third_libs/generate_lib/include
)link_directories(third_libs/generate_lib/lib
)# 将源代码添加到此项目的可执行文件。
add_executable (use_lib use_lib.cpp)
target_link_libraries(use_lib ${catkin_LIBRARIES} add
)if (CMAKE_VERSION VERSION_GREATER 3.12)set_property(TARGET use_lib PROPERTY CXX_STANDARD 20)
endif()# TODO: 如有需要,请添加测试并安装目标。
- 将generate_lib文件夹复制到“use_lib/third_libs/”文件夹路径下。
- 将“generate_lib/install/bin/add.dll”文件复制到"use_lib\out\build\x64-debug"文件夹路径下。
- 点击VsStudio中的“全部重新生成”即可得到可执行文件。