View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0015497 | CMake | CMake | public | 2015-04-06 00:05 | 2015-11-02 09:13 | ||||
Reporter | Hendy Irawan | ||||||||
Assigned To | |||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | closed | Resolution | no change required | ||||||
Platform | Linux amd64 | OS | Ubuntu | OS Version | 14.04 | ||||
Product Version | CMake 2.8.12.2 | ||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0015497: Eclipse CDT4 Generator incorrectly process CMAKE_MAKE_PROGRAM with arguments | ||||||||
Description | Eclipse requires separate build command and build arguments settings. | ||||||||
Steps To Reproduce | CMakeLists.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 Information | In 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 [^] | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | |
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. |
Notes |
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 |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |