View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0015497CMakeCMakepublic2015-04-06 00:052015-11-02 09:13
ReporterHendy Irawan 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionno change required 
PlatformLinux amd64OSUbuntuOS Version14.04
Product VersionCMake 2.8.12.2 
Target VersionFixed in Version 
Summary0015497: Eclipse CDT4 Generator incorrectly process CMAKE_MAKE_PROGRAM with arguments
DescriptionEclipse requires separate build command and build arguments settings.
Steps To ReproduceCMakeLists.txt:

set(CMAKE_MAKE_COMMAND "${CMAKE_MAKE_PROGRAM} -j8")

Generated files - INCORRECT

.project:

                <dictionary>
                    <key>org.eclipse.cdt.make.core.build.command</key>
                    <value>/usr/bin/make -j8</value>
                </dictionary>

.cproject:

            <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
                <buildTargets>
                    <target name=": rebuild_cache" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>rebuild_cache</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[exe] vpercnode" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>vpercnode</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[exe] vpercnode/fast" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>vpercnode/fast</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="Build" path="[Targets]/[exe] vpercnode" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments>-C "/home/ceefour/git/vpercnode" </buildArguments>
                        <buildTarget>vpercnode</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="Clean" path="[Targets]/[exe] vpercnode" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/cmake</buildCommand>
                        <buildArguments>-E chdir "/home/ceefour/git/vpercnode" "/usr/bin/cmake" -P "CMakeFiles/vpercnode.dir/cmake_clean.cmake"</buildArguments>
                        <buildTarget/>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name=": all" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>all</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name=": clean" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>clean</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[obj] src/vpercnode.cpp.o" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>src/vpercnode.cpp.o</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[pre] src/vpercnode.cpp.i" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>src/vpercnode.cpp.i</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[to asm] src/vpercnode.cpp.s" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make -j8</buildCommand>
                        <buildArguments/>
                        <buildTarget>src/vpercnode.cpp.s</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                </buildTargets>
            </storageModule>
        </cconfiguration>
    </storageModule>
    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
        <project id="vpercnode.null.1" name="vpercnode"/>
    </storageModule>
    <storageModule moduleId="scannerConfiguration">
        <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
        <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
            <buildOutputProvider>
                <openAction enabled="true" filePath=""/>
                <parser enabled="true"/>
            </buildOutputProvider>
            <scannerInfoProvider id="specsFile">
                <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="/usr/bin/cc" useDefault="true"/>
                <parser enabled="true"/>
            </scannerInfoProvider>
        </profile>
        <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
            <buildOutputProvider>
                <openAction enabled="true" filePath=""/>
                <parser enabled="true"/>
            </buildOutputProvider>
            <scannerInfoProvider id="makefileGenerator">
                <runAction arguments="-f ${project_name}_scd.mk" command="/usr/bin/make -j8" useDefault="true"/>
                <parser enabled="true"/>
            </scannerInfoProvider>
        </profile>
    </storageModule>

Generated files - CORRECT:

.project

                <dictionary>
                    <key>org.eclipse.cdt.make.core.build.arguments</key>
                    <value>-j8</value>
                </dictionary>
                <dictionary>
                    <key>org.eclipse.cdt.make.core.build.command</key>
                    <value>/usr/bin/make</value>
                </dictionary>

.cproject :

            <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
                <buildTargets>
                    <target name=": rebuild_cache" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>rebuild_cache</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[exe] vpercnode" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>vpercnode</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[exe] vpercnode/fast" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>vpercnode/fast</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="Build" path="[Targets]/[exe] vpercnode" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8 -C "/home/ceefour/git/vpercnode" </buildArguments>
                        <buildTarget>vpercnode</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="Clean" path="[Targets]/[exe] vpercnode" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/cmake</buildCommand>
                        <buildArguments>-E chdir "/home/ceefour/git/vpercnode" "/usr/bin/cmake" -P "CMakeFiles/vpercnode.dir/cmake_clean.cmake"</buildArguments>
                        <buildTarget/>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name=": all" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>all</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name=": clean" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>clean</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[obj] src/vpercnode.cpp.o" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>src/vpercnode.cpp.o</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[pre] src/vpercnode.cpp.i" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>src/vpercnode.cpp.i</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                    <target name="[to asm] src/vpercnode.cpp.s" path="" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
                        <buildCommand>/usr/bin/make</buildCommand>
                        <buildArguments>-j8</buildArguments>
                        <buildTarget>src/vpercnode.cpp.s</buildTarget>
                        <stopOnError>true</stopOnError>
                        <useDefaultCommand>false</useDefaultCommand>
                    </target>
                </buildTargets>
            </storageModule>
        </cconfiguration>
    </storageModule>
    <storageModule moduleId="cdtBuildSystem" version="4.0.0">
        <project id="vpercnode.null.1" name="vpercnode"/>
    </storageModule>
    <storageModule moduleId="scannerConfiguration">
        <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
        <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
            <buildOutputProvider>
                <openAction enabled="true" filePath=""/>
                <parser enabled="true"/>
            </buildOutputProvider>
            <scannerInfoProvider id="specsFile">
                <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="/usr/bin/cc" useDefault="true"/>
                <parser enabled="true"/>
            </scannerInfoProvider>
        </profile>
        <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
            <buildOutputProvider>
                <openAction enabled="true" filePath=""/>
                <parser enabled="true"/>
            </buildOutputProvider>
            <scannerInfoProvider id="makefileGenerator">
                <runAction arguments="-j8 -f ${project_name}_scd.mk" command="/usr/bin/make" useDefault="true"/>
                <parser enabled="true"/>
            </scannerInfoProvider>
        </profile>
    </storageModule>
Additional InformationIn summary:

1. It has to split the actual make command and the arguments
2. In Eclipse project files, the make command and arguments are separate settings. In cases where there's already an argument, it should be prefixed (with additional space) from the other arguments.

Also on StackOverflow: http://stackoverflow.com/questions/10688549/cmake-and-parallel-build#comment47092785_10688549 [^]
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0038405)
Felix Schwitzer (reporter)
2015-04-06 06:34

For eclipse project there is a cmake-variable CMAKE_ECLIPSE_MAKE_ARGUMENTS that
exactly sets <buildArguments>-jN</buildArguments> in .cproject
(0038408)
Brad King (manager)
2015-04-06 08:36

Re 0015497:0038405: Indeed, CMAKE_MAKE_PROGRAM is supposed to be the path to the tool only, not a command line.
(0039760)
Robert Maynard (manager)
2015-11-02 09:13

Closing resolved issues that have not been updated in more than 4 months.

 Issue History
Date Modified Username Field Change
2015-04-06 00:05 Hendy Irawan New Issue
2015-04-06 06:34 Felix Schwitzer Note Added: 0038405
2015-04-06 08:36 Brad King Note Added: 0038408
2015-04-06 08:37 Brad King Status new => resolved
2015-04-06 08:37 Brad King Resolution open => no change required
2015-11-02 09:13 Robert Maynard Note Added: 0039760
2015-11-02 09:13 Robert Maynard Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team