我正在习惯使用命令行界面(linux 等),并且遇到如下命令:
git [命令]
..例如
git 推送
我有一个项目(用 C++ 开发),想知道它是否是可以创建自定义命令,例如:
(假设我的项目名为“MyProject”):
我的项目编译
然后哪个会执行gcc
编译命令?
注意:我知道可以创建自己的命令,例如“编译”,但我想创建具有“参考”和“命令”的命令。
答案1
一旦掌握了窍门,比 shell 脚本编写更简单的方法就是使用制作,您之前可能已经看到过参考。
一个极其简单的 makefile 可能如下所示:
myproject: myproject.cpp
g++ myproject.cpp -o myproject
如果未指定,默认情况make
下会选择第一个目标,因为在这种情况下只有一个目标,它将执行您在其中看到的操作。目标是冒号之前的标签(myproject);冒号之后是先决条件目标。如果这些目标未列出,则假定它们是文件。在这种情况下,如果 myproject.cpp 自 myproject 目标的输出(“myproject”二进制文件)以来没有更改,则 make 不执行任何操作。如果有,它会重新编译。
随着事情变得更加复杂,make 的使用价值也变得更加清晰:
flags = -Wall -g -O2
myproject: myproject.h myproject.cpp somepart.o
g++ $(flags) somepart.o myproject.cpp -o myproject
somepart.o: somepart.h somepart.cpp
g++ $(flags) -c somepart.cpp -o somepart.o
.h 文件是先决条件,因为如果您更改一个文件,您需要重新编译需要它的部分。所以现在你可以make somepart.o
只编译对象,或者你可以make
使用第一个目标(myproject),它需要最新的“somepart.o”,所以如果它不可用,它将使所有这些也。
使用 bash 脚本来做到这一点并不那么容易,这可能就是make
出现的原因。不幸的是,“掌握窍门”可能需要一些时间。 l0b0 已经链接到此:
http://www.gnu.org/software/make/manual/make.html
首先要注意,make 对空格敏感,尤其是在使用实际制表符而不是空格时。
答案2
答案3
最好保留标准命令。即,make
编译您的项目,等等。合作者更容易接手,很多更容易设置,需要记住的随机内容更少(或在下一台机器/项目上设置)。您将从事的大多数项目都不是您自己的,并且保留该机器作为它们的补丁会带来很多麻烦。