用命令行构建 C++

2017-06-15  本文已影响146人  mnikn

一开始初学 C++ 的时候免不了用 IDE,但是有时候我只是想用控制台做一点小测试,不需要用特地用 IDE 来构建一个项目,如果能够一句命令行就能运行就好了。本文将会讲述如何从零开始用命令行构建 C++,以下操作均在 mac/linux 环境下运行,

准备工作

要构建 C++ 的话,需要编译器和构建工具,编译器我们使用 g++,而构建工具则使用 make。如果没有这两样工具的话我们需要打开命令行,运行下面命令。

# for mac
brew install g++
brew install make

# for linux
sudo apt-get g++
sudo apt-get make

命令行 Hello world!

我们先开始创建我们的第一个 c++ 文件。

mkdir hello-project 
cd hello-project
touch main.cpp

然后通过编辑器输入以下内容。

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

然后创建构建规则文件 makefile,这个文件将告诉系统如何构建程序,具体的 make 教程可查看 Make 命令教程 ,和我之前写的一篇文章 Makefile的使用

touch makefile

修改 makefile 文件内容,对于 g++ 的构建可参考 gcc编译过程,其构建命令和 gcc 基本一样。

## 通过 g++ 构建文件 main.cpp,生成文件默认为 a.out
## 带冒号那一行是下面命令的代称,为了避免有文件与之重名,所以加上 .PHONY
.PHONY: program
program: 
    g++ main.cpp

.PHONY: clean
clean:
    rm *.o *.out

最后我们通过命令行根据 makefile 构建,并运行。

# make 会默认寻找当前目录下名叫 makefile 的文件,并按照规则构建
make source

# 运行!
./a.out

用命令行构建类!

上面只有一个文件,但是我们大多数情况需要构建多个文件,我们以构建一个 Person 类为例,在 main.cpp 里面 使用 Person 类。

首先我们创建 Person.h。

#ifndef PERSON_H
#define PERSON_H

#include <string>
using std::string;

class Person{
    private:
        string _name;

    public:
        string getName();
        void setName(string name);
}

#endif

然后创建 person.cpp。

#include "Person.h"

string Person::getName(){
    return this->_name;
}

void Person::setName(string name){
    this->_name = name;
}

在 main.cpp 中使用 person。

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

int main()
{
    Person person;
    person.setName("Gay");
    cout << person.getName() << endl;
    return 0;
}

修改 makefile。

.PHONY: program
program: main.o person.o
    g++ main.o person.o -o program

main.o: main.cpp person.h
    g++ -c main.cpp -o main.o

person.o: person.cpp person.h
    g++ -c person.cpp -o person.o

.PHONY: clean
clean:
    rm *.o program

最后运行,搞定!

make

./program
上一篇 下一篇

猜你喜欢

热点阅读