我试着尽可能地寻找这样一个问题,但我就是不知道该怎么问。如果这个问题之前已经得到了回答,或者是一个微不足道的问题,我深表歉意。我是大人物的新手(而且很吓人!)C++世界。我以后会尽力的。
让我试着解释一下我的意思:
我在Linux Ubuntu14.04上。在Ubuntu上,为了编写一个C++程序,我写了一个例子,比如说,一些文件MyStudio.CPP,I CD到它的目录,并把下面的类型输入到终端:

g++ myProgram.cpp -o myProgram

这样,我就可以键入:
./myProgram

运行我的程序。这是简单而令人满意的,我从阅读C++入门书中学到了这一点。在找到自己舒适的C++代码之后,我决定着手给自己一个项目,它涉及使用图像Migik,特别是它的C++ API:MaGik++。然而,现在,如果我想编译一些东西,我必须输入这个丑陋的混乱:
g++ `Magick++-config --cxxflags --cppflags` -o testMagick testMagick.cpp `Magick++-config --ldflags --libs`

使我的代码编译和执行。这看起来很混乱,当我试图查看cimg是否更好时,发现它需要自己的一组参数,比如-lm-lpthread-lX11。它还证明,用C++ 11编译,我必须编写-std=c++0x。所以我的问题是:
有没有办法简化/清理终端中的编译语句,或者每当我使用不同的api编译不同类型的程序时,是否必须找出并使用一组特定的参数?

最佳答案

在紧要关头,您可以制作一个shell脚本来为您执行此操作。这样可以把杂乱的东西分开:

#!/bin/bash
IMAPI_OPTS=$(Magick++-config --cxxflags --cppflags)
IMAPI_LIBS=$(Magick++-config --ldflags --libs)

g++ $IMAPI_OPTS -o testMagick testMagick.cpp $IMAPI_LIBS

您可以调用此文件build.sh,并使其可执行。然后,每次输入./build.sh都会以相同的方式进行构建。
不过,这与makefile的外观相差不大,从长远来看,使用makefile可能更适合您。最简单的makefile的行为与上述类似,并且不执行依赖项检查:
IMAPI_OPTS=`Magick++-config --cxxflags --cppflags`
IMAPI_LIBS=`Magick++-config --ldflags --libs`

all:
        g++ $(IMAPI_OPTS) -o testMagick testMagick.cpp $(IMAPI_LIBS)

在本例中,您只需将其保存到名为Makefile的文件中,然后运行make来进行构建。
如果您有兴趣了解更多信息,请尝试以下链接:GNU make: Introduction

关于c++ - 如何清理C++编译器命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31106641/

10-13 08:09
查看更多