头文件:A.h

void test();

源文件:A.cpp

#include <iostream>
#include<thread>
#include<chrono>
#include<clocale> #include "boost/date_time/gregorian/gregorian.hpp"
#include "boost/date_time/posix_time/posix_time.hpp" using namespace std;
using namespace boost;
using namespace boost::gregorian;
using namespace boost::posix_time; void test()
{
date d = day_clock::local_day();
date_facet* dfacet = new date_facet("%Y年%m月%d日");
cout.imbue(locale(cout.getloc(), dfacet));
cout << d << endl; ptime tp = microsec_clock::local_time();
time_facet* tfacet = new time_facet("%Y年%m月%d日%H点%M分%S%F秒");
cout.imbue(locale(cout.getloc(), tfacet));
cout << tp << endl; }

main函数所在文件:test.cpp

#include "A.h"

int main()
{
test();
return 0;
}

手动编译:

一步编译:

g++ -o test.o A.cpp test.cpp -std=c++11

分开编译:

g++ -c A.cpp -std=c++11

g++ -c test.cpp

g++ A.o test.o -o test.out

运行:./test.out

采用makefile编译:

test:A.o test.o
g++ -o test A.o test.o
test.o:A.h test.cpp
g++ -c test.cpp
A.o:A.cpp
g++ -c A.cpp -std=c++11
clean:
rm test A.o test.o

引入变量:

objects=A.o test.o
test:$(objects)
g++ -o test $(objects)
test.o:A.h test.cpp
g++ -c test.cpp
A.o:A.cpp
g++ -c A.cpp -std=c++11
clean:
rm test $(objects)

自动推导:

objects=A.o test.o
test:$(objects)
g++ -o test $(objects)
test.o:A.h //省略编译命令和test.cpp
A.o:A.cpp
g++ -c A.cpp -std=c++11 //因为要使用c++11编译,所以显示给出,这两句。否则,和上一行可以省略
clean:
rm test $(objects)

1.附加库在链接阶段
2.不属于项目的头文件,如果没在默认寻找目录中,使用 -L指定,在依赖中不用写
3.使用mysql的库要apt-get install libmysql++-dev objects=main.o parsexml.o tinyxml2.o opfile.o opmysql.o stringex.o pathx.o timex.o logtoo_srvd_bin=../build/bin logtoo_srvd:$(objects)
g++ -o $(logtoo_srvd_bin)/logtoo_srvd $(objects) -L /usr/local/lib -lmysqlclient
rm $(objects) main.o:parsexml.h opmysql.h opfile.h stringex.h timex.h pathx.h main.cpp g++ -c main.cpp -I /usr/local/include -std=c++11 parsexml.o:tinyxml2.h parsexml.cpp g++ -c parsexml.cpp -std=c++11 tinyxml2.o: opfile.o:stringex.h timex.h opfile.cpp g++ -c opfile.cpp -std=c++11 opmysql.o:opmysql.cpp g++ -c opmysql.cpp -I /usr/local/include -std=c++11 stringex.o:stringex.cpp g++ -c stringex.cpp -std=c++11 pathx.o:pathx.cpp g++ -c pathx.cpp -std=c++11 timex.o: clean:
rm $(logtoo_srvd_bin)/logtoo_srvd

g++多文件编译的更多相关文章

  1. C++命令行多文件编译(g++)

    在刚开始学Java时用命令行进行编译代码.而C++一直在用IDE, 这次尝试下命令行编译.vs下也可以用cl.exe.link.exe等命令来进行编译 但这次是通过安装MinGW来学习命令编译,主要用 ...

  2. gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解

    摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C+ ...

  3. LINUX下文件编译

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  4. gcc/g++ 实战之编译的四个过程

    gcc和g++分别是GNU(一个开源组织)的c&c++编译器   对于.c后缀的文件,gcc把它当做是C程序,g++当做是C++程序:对于.cpp后缀的文件,gcc和g++都会当做c++程序. ...

  5. WebStorm ES6 语法支持设置和ES6语法的JS文件编译为ES5语法文件

    ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0.ES6的目标,是使得JavaS ...

  6. 用gulp把less文件编译成css文件

    第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...

  7. 嵌入式之:Linux下文件编译过程

    本文主要三个部分:1.GNU GCC简介 2.C/C++交叉编译器arm-elf-gcc 3.make文件,用于工程管理 部分一:GNU GCC简介: 该编译器基本功能: (1)输出预处理后的文件(展 ...

  8. Ubuntu的多文件编译以及c语言的数组、函数

    闲言少叙,直接切入主题. 一.Linux下的多文件编译(Ubuntu系统). 对于小程序来说,往往一个.c文件就足够了,里面包含了各种主函数和功能函数,以及函数的声明等等.但是这样的弊端主要有两点,一 ...

  9. Day Tip:SharePoint 2013 *.ascx.g.cs文件

    在开发SharePoint2013的WebPart时,会产生一个*.ascx.g.cs文件.如果用TFS管理源代码经常遇到这个文件丢失.这让人很困扰,如果丢失了请在如下图中添加如下代码:       ...

随机推荐

  1. mysql 下载和 安装

    一.下载mysql 1. 在浏览器里打开mysql的官网http://www.mysql.com/ 2. 进入页面顶部的"Downloads" 3. 打开页面底部的“Communi ...

  2. HDU 3455

    http://acm.hdu.edu.cn/showproblem.php?pid=3435 同下题,只是这题是双向边,同时让我认识到了一个问题,一个图拆点做二分图完美匹配的本质是求该图环的并 htt ...

  3. CKPT,SCN

    CKPT进程:完全检查点 ckpt进程的作用,触发全局检查点,通过DBWR将buffer_cache中的所有脏块写入数据文件中:由于DBWR的机制,因此lgwr会先写,然后dbwr后写. 当完全检查点 ...

  4. pip模块的使用

    安装pip: sudo apt-get install python-pip           (python2的安装) sudo apt-get install python3-pip      ...

  5. HUD 1969:Pie(二分)

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  6. (4)socket的基础使用(基于TCP协议的并发编程)

    需要实现并发需要依靠socketserver 模块 socketserver模块下有几个功能 def __init__(self, request, client_address, server): ...

  7. CTF-练习平台-Misc之 妹子的陌陌

    二十五.妹子的陌陌 该图片后缀名为rar,发现里面有一个文本 但是解压需要密码,应为不知道是几位的没法爆破,观察图片后发现红色字体:“喜欢我吗.”尝试一下,居然是密码,将文本解压出来 内容如下: 嘟嘟 ...

  8. Microsoft - Find the K closest points to the origin in a 2D plane

    Find the K closest points to the origin in a 2D plane, given an array containing N points. 用 max hea ...

  9. windows下,java环境变量的设置,设置点击startup.bat启动tomcat

    1.首先.安装好java jdk以后环境变量设置: CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar JAVA_HOME:C:\ ...

  10. Digester库使用总结

    1.Digester是Apache软件基金会的Jakarta项目下的子Commons项目下的一个开源项目,Digester API包含3个包:org.apache.commons.digester,提 ...