CMake生成静态库

目录结构

文件内容
  • Hello.h
#ifndef MYSHAREDLIB_HELLO_H
#define MYSHAREDLIB_HELLO_H

// 打印 Hello World!
void hello();

// 使用可变模版参数求和
template <typename T>
T sum(T t)
{
    return t;
}
template <typename T, typename ...Types>
T sum(T first, Types ... rest)
{
    return first + sum<T>(rest...);
}

#endif
  • Hello.cpp
#include <iostream>
#include "Hello.h"

void hello() {
    std::cout << "Hello, World!" << std::endl;
}
  • main.cpp
#include <iostream>
#include "Hello.h"
using std::cout;
using std::endl;

int main() {

    hello();
    cout << "1 + 2 = " << sum(1,2) << endl;
    cout << "1 + 2 + 3 = " << sum(1,2,3) << endl;

    return 0;
}
cmake基本脚本
#cmake版本
cmake_minimum_required(VERSION 3.5)

# 项目名称
project(hello_library)

# 根据库文件代码生成静态库
add_library(hello_library STATIC src/Hello.cpp)

# 包含指定头文件所在的目录
target_include_directories(hello_library PUBLIC  ${PROJECT_SOURCE_DIR}/include/static)

# 创建可执行程序
add_executable(hello_binary src/main.cpp)

# 链接静态库文件
target_link_libraries( hello_binary PRIVATE hello_library)
编译
mkdir build
cd build
cmake ..
make
./hell_binary
返回结果
Hello, World!
1 + 2 = 3
1 + 2 + 3 = 6

原文地址:https://www.cnblogs.com/spmt/p/12597112.html

时间: 2024-10-13 21:23:14

CMake生成静态库的相关文章

cmake利用toolchain.cmake生成makefile之后,make生成静态库失败问题

问题描述 利用toolchian.cmake设置好编译器后,利用make指令生成静态库,出现以下问题 Error running link command: No such file or directory 出错原因,toolchain.cmake文件内没有声明静态库生成器AR:解决方式,在toolchian.cmake文件内添加下面的声明 SET(CMAKE_AR $(TOOLCHAIN_DIR)/bin/arm-linux-gnueabihf-ar CACHE FILEPATH "Arch

C++生成静态库

//StaticMath.h #include <iostream> class StaticMath { public: //StaticMath(void); //~StaticMath(void); static double add(double a, double b);//加法 void print(); }; //StaticMath.cpp #include "StaticMath.h" double StaticMath::add(double a, do

一个可以自动生成静态库,自动安装程序的Makefile

.PHONY:clean install CC=g++ CFLAGS=-Wall -g BIN=libecho.a INCLUDE=echo SRC=src OBJS=Socket.o Rio.o TcpConnection.o PollPoller.o InetAddress.o TcpServer.o Thread.o Condition.o ThreadPool.o Exception.o Timer.o TimerThread.o STARD=-std=c++0x -rdynamic $

[转]Linux下用gcc/g++生成静态库和动态库(Z)

Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅 在 linux 下,库文件一般放在 /usr/lib 和 /lib 下, 静态库的名字一般为 libxxxx.a ,其中 xxxx 是该 lib 的名称 动态库的名字一般为 libxxxx.so.major.minor , xxxx 是该 lib 的名称, major 是主版本号, minor 是副版本号

编译 python 生成静态库 libpython2.7.so

由于我们是C++作驱动的Python开发,驱动需要加上Python静态库libpython2.7.so.libpython2.7.so.1.0.libpython2.7.a.此处我想在python源码上加上自己加的log,因此要重新编译Python生成静态库,再生成驱动. 一般快速编译安装Python源码步骤: ./configure make make install 如果要生成静态库libpython2.7.so.libpython2.7.so.1.0.libpython2.7.a,则为:

Makefile学习(二)----生成静态库文件

Lunix下编译静态库文件: .o后缀文件:编译生成的中间代码文件: .a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大: .so后缀文件:动态库文件,只是一个指向,不会合到可执行程序中,当要调用函数库的时候才使用: 用一个简单的例子阐述下在lunix环境下生成静态库文件的过程: 一.   源码文件: so_test.h: void test_a(); void test_b(); void test_c(); test_a.c: #include "so_test.h"

Ubuntu下makefile及gcc生成静态库动态库的简单使用举例

环境:Ubuntu-13.10  32位(虚拟机).gcc4.8.1 首先创建一个test_makefile_gcc文件夹,此test_makefile_gcc文件夹下包括:src文件夹用于存放源文件: include文件夹用于存放头文件:bin文件夹用于存放生成的动态库.so文件:lib文件夹用于存放生成的静态库.a文件:project_makefile文件夹存放此工程的makefile文件:test文件夹存放用来测试静态库和动态库的源文件:另外在test_makefile_gcc文件夹下还包

CMake同时生成静态库和动态库

环境:Linux CMake 修改CMakeLists.txt 同时将模块编译生成动态库和静态库的方法: ADD_LIBRARY(nyutil SHARED ${SRC_LIST}) ADD_LIBRARY(nyutil_static STATIC ${SRC_LIST}) SET_TARGET_PROPERTIES(nyutil_static PROPERTIES OUTPUT_NAME "nyutil") SET_TARGET_PROPERTIES(nyutil PROPERTIE

Linux 如何生成静态库和动态库

1.引言 1.linux下的库 静态库和共享库(动态库),二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大. 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小. 2.库存在的意义 库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议. 现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 共享库的好处是,不同的应用程序如果调用相同的库,那么