开发者

More inside an IDE(eclipse cdt)

开发者 https://www.devze.com 2022-12-24 11:15 出处:网络
This is what I see in the Console when I clicked Project->Clean menu: g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\\hw.o ..\\src\\hw.cpp

This is what I see in the Console when I clicked Project->Clean menu:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\hw.o ..\src\hw.cpp
g++ -ohw.exe src\hw.o

But I've no idea how is these command generated?

Can someone elaborate the lifecycle of the command?

This is the .project file:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>hw</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
            <triggers>clean,full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>?name?</key>
                    <value></value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.append_environment</key>
                    <value>true</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.buildArguments</key>
                    <value></value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.buildCommand</key>
                    <value>make</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.buildLocation</key>
                    <value>${workspace_loc:/hw/Debug}</value>
          开发者_运维问答      </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.contents</key>
                    <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
                    <value>false</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
                    <value>true</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.enableFullBuild</key>
                    <value>true</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.stopOnError</key>
                    <value>true</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
                    <value>true</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.cdt.core.cnature</nature>
        <nature>org.eclipse.cdt.core.ccnature</nature>
        <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
        <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
    </natures>
</projectDescription>


Open Debug/makefile or Release/makefile in the text editor. It contains commands that you see in the Console window. Additionaly, clean section is executed when you make Clean and not regular build.

Generally, CDT generates makefile according to the project properties, for all source files in the projects. Then it executes makefile using command make, with optional parameters. You can do the same by executing make command from the command line in Debug or Release directories.

From the command line, it looks like this:

alex@alex-linux:~/workspace/Test/Debug$ make clean
rm -rf  ./main.o  ./main.d  Test

alex@alex-linux:~/workspace/Test/Debug$ make
Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.cpp"
Finished building: ../main.cpp

Building target: Test
Invoking: GCC C++ Linker
g++  -o"Test"  ./main.o   
Finished building target: Test
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号