Eclipse如何决定将新的<folderinfo>添加到.cproject文件中?

时间:2017-06-21 21:55:18

标签: eclipse embedded

我注意到有时当我向项目添加新的.c和.h文件时,Eclipse会决定创建一个新的folderInfo部分。这意味着我对项目设置所做的构建选项更改将仅使用resourcePath =“”

应用于folderInfo
<RaisedButton label="Default" style={style} onTouchTap={yourEventHandler} />

并且不会应用于与新folderInfo关联的文件的构建。

<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.887144602." name="/" resourcePath="">
                    <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.999539370" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
                        <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.22516938" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
                        <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.2075272782" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" useByScannerDiscovery="false" value="STM32L475VGTx" valueType="string"/>
...

如何防止创建新的folderInfo部分,或者如何在不手动编辑.cproject文件的情况下将更改应用于两个folderInfo部分?

谢谢!

2 个答案:

答案 0 :(得分:0)

我仍然不确定为什么会这样,但想发布我的工作。

找到导致问题的顶级文件夹,然后右键单击它并转到&#34;资源配置&#34;&gt;&#34;重置为默认&#34;。通常这&#34;重置为默认&#34;是灰色的,但是当eclipse生成了一个新的folderInfo部分时,这个选项是黑色/可以选择。

enter image description here

答案 1 :(得分:0)

今天这篇文章对我帮助很大,我想添加更多信息。 我浪费了 3 小时试图找出一个编译错误,该错误告诉我编译器找不到头文件。 我在 [右键单击项目]->C/C++ 常规-> 路径和符号-> 包含(对于 GNU C++)中添加了正确的包含文件夹。 编译器的预处理器仍然找不到头文件。

我完全按照@rose 的描述做了:我在 src 文件夹中创建了一个新文件,然后我意识到我必须将两个文件夹添加到包含路径 (-I) 中。我做的。 但是编译器一直失败。

在 .cproject 中有两个“folderInfo id”部分用于相同的“配置工件名称”

其中一个“folderInfo id”部分专门用于:

name="/" resourcePath="src"

然后我意识到,每当我更改“路径和符号”中的包含路径时,新的 folderInfo id 都不会改变。 最后我遇到了这篇文章,我完全按照它说的做了。我转到 src 文件夹,右键单击,“资源配置”,并启用“重置为默认值...”。我点击并重置为默认值。这是唯一启用了“重置为默认值...”的文件夹。 然后在 .cproject 中,不可修改的 folderInfo id 消失了,我能够在没有同样问题的情况下进行编译(我遇到了新错误 :) )

这里我要添加两个 folderInfo id 部分之间的差异。这是有变化的正确的:

    <storageModule moduleId="cdtBuildSystem" version="4.0.0">

        <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.43054842" name="Debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.exe.debug">
                                
            <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.43054842." name="/" resourcePath="">
                                        
                <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.330192629" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
                                                
                    <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.85760128" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>

                    <builder buildPath="${workspace_loc:/myprojUnitTest}/Debug" id="cdt.managedbuild.target.gnu.builder.exe.debug.719946717" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
                                                
                    <tool id="cdt.managedbuild.tool.gnu.archiver.base.1032292713" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
                                                
                    <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1002854658" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
                                                        
                        <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.305235605" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
                                                        
                        <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="gnu.cpp.compiler.exe.debug.option.debugging.level.702864614" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
                                                        
                        <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.332186867" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
                                                                
                            <listOptionValue builtIn="false" value="/opt/googletest/googletest/include"/>
                                                                
                            <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/myproj/common}&quot;"/>
                                                                
                            <listOptionValue builtIn="false" value="&quot;${workspace_loc:/myprojUnitTest/myproj/connector}&quot;"/>

而这个是需要消失的:

                    <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.43054842.1553324918" name="/" resourcePath="src">
                                            
                    <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.645104237" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug" unusedChildren="">
                                                    
                        <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
                                                    
                        <tool id="cdt.managedbuild.tool.gnu.archiver.base.1301414938" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base.1032292713"/>
                                                    
                        <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.311086767" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1002854658">
                                                            
                            <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.168615906" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
                                                                    
                                <listOptionValue builtIn="false" value="/opt/googletest/googletest/include"/>
                                                                    
                                <listOptionValue builtIn="false" value="&quot;${workspace_loc:/myproj/pcap}&quot;"/>
                                                                    
                                <listOptionValue builtIn="false" value="&quot;${workspace_loc:/myproj/common}&quot;"/>
                                                                    
                                <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/myproj/skb}&quot;"/>

我在使用 Eclipse IDE for C/C++ 版本 4.14.0 的 Linux Ubuntu 中遇到了这个问题。这不是嵌入式系统。 我真的不知道这是否是 Eclipse 中的错误。似乎在 2018 年创建了一个错误,并且从未关闭:https://bugs.eclipse.org/bugs/show_bug.cgi?id=541268