繁体   English   中英

指定netbeans用来编译C ++程序的完整编译命令?

[英]Specifying the full compile command that netbeans uses to compile a C++ program?

问题/目标我试图找出如何完全控制netbeans编译命令,以便可以从以下方式进行更改:

'g ++ main.cpp foo.cpp bar.cpp'

至:

'g ++ main.cpp -Wall'

原因如果我登录到终端并手动键入:'g ++ main.cpp -Wall',则我的程序可以正常编译。 当我尝试使用netbeans进行编译时,我在控制台中看到它正在执行'g ++ main.cpp foo.cpp bar.cpp',但失败了,因为main.cpp已经在顶部包含了foo.cpp和bar.cpp。文件。 我收到“文件/方法的多个定义”错误。

问题那么我将如何更改命令,使其仅在compile命令中包含main.cpp? 更好的是,如何手动指定整个命令字符串?

从您的解释来看,您首先做错了。 如果有多个cpp文件,则可以将每个文件编译为一个目标文件,然后将它们链接在一起。 使用#include包含.cpp文件是错误的方法-那就是标题(.h)文件的作用。

头文件(.h)包含在C ++文件(.cpp)中定义的代码部分的声明。 通过包含标题,您可以使用在其他地方定义的函数。 在其他地方可能是另一个目标文件(.o或.obj-由gcc -c something.cpp创建)或库文件(.lib)。 当您拥有3个cpp文件(a.cpp,b.cpp,c.cpp)并且它们都使用彼此的函数时,编译周期将为:

gcc -c a.cpp -> yields a.o
gcc -c b.cpp -> yields b.o
gcc -c c.cpp -> yields c.o

gcc -o program a.o b.o c.o -> yields program (executable)

或速记:

gcc a.cpp b.cpp c.cpp -o program

当b.cpp需要在c.cpp中定义的功能时,则b.cpp需要

#include <c.h>

其中ch包含b需要使用的函数的声明。

当您在源代码中执行#include "b.cpp"时,几乎总是完全错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM