e2 studio v6で常に全ビルドされてしまう現象に遭遇したので調べてみた(自分の作業ミスもあったけどe2 studioも良くないと思う)

こんにちは。NoMaYです。

別スレッドで、e2 studio v6(そのスレッドではv6.1.0)でビルドしようとするとソースコードを全く変更していないのに全ビルドが行われてしまう現象に遭遇したので、原因を調べてみたところ、v6では以下のDependency_Scan_Preferences.prefsファイルが.settingsフォルダに必ず必要であることが分かりました。(今までは、そのようなことは無かった、のですが、、、)

.settings\Dependency_Scan_Preferences.prefs

DependecyMode=ScanBuildDep
eclipse.preferences.version=1

そのスレッドでは、ちょっと変則的なことをしましたが、基本的にはe2 studio v4.0.2のプロジェクトをe2 studio v6.1.0にインポートして古いe2studioプロジェクトを更新するのと同じことをした筈でした。ですが、上記のようにe2 studio v6が変わっていたことに気付かなかったので、その時に生成された上記ファイルをプロジェクトを固めたzipファイルに含めませんでした。その結果、このような現象に遭遇することになってしまいました。

その時の作業をやり直してみると、以下のようなファイルが生成されており、削除していなければ現象は発生しなかった筈でした。ちなみに、上記ファイルの他にもうひとつ生成されていました。(最後の数値1894558540は.cprojectファイル内の値と連動していて、.cproject内の値ともども何らかの仕組みで適宜異なる値が生成されるようです。)

.settings\Dependency_Scan_Preferences.prefs

DependecyMode=ScanBuildDep
eclipse.preferences.version=1

.settings\e2studio_project.prefs

#
#Sat Dec 23 14:08:54 JST 2017
settingConfiguration=com.renesas.cdt.managedbuild.renesas.ccrx.hardwaredebug.configuration.1894558540
activeConfiguration=com.renesas.cdt.managedbuild.renesas.ccrx.hardwaredebug.configuration.1894558540

以下、そういったことに気付くまでにe2 studio v5.4.0とe2 studio v6.1.0で色々と調査した結果です。(結局は自分の作業ミスであり、分かった時はガックリしましたが、この際ですので投稿しておきます。)

(1) e2 studio v5.4.0の場合

以下の設定でプロジェクトを生成させました。




生成されたファイルは以下の通りです。




.settings\Dependency_Scan_Preferences.prefs

2577.v540_Dependency_Scan_Preferences_prefs.txt
Build\ project\ excluding\ the\ dependencies=false
Re-generate\ and\ use\ dependencies\ during\ project\ build=true
Use\ existing\ dependencies\ during\ project\ build=false
eclipse.preferences.version=1


.settings\fitsettings.xml

7183.v540_fitsettings.xml.txt
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FITMODULE xmlns:ns2="com.renesas.tools.fitconfigurator.settings.SerializeData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="">
    <fitProject>true</fitProject>
</FITMODULE>


.settings\Project_Generation_Prefrences.prefs

8171.v540_Project_Generation_Prefrences_prefs.txt
com.renesas.cdt.renesas.Assembler.option.userDefine=-nologo;;;
com.renesas.cdt.renesas.Compiler.option.C=com.renesas.cdt.renesas.Compiler.option.C99
com.renesas.cdt.renesas.Compiler.option.UserDef=-nologo;
com.renesas.cdt.renesas.Compiler.option.defines=__RX\=1;
com.renesas.cdt.renesas.Compiler.option.deviceShortName=R5F52318AxFP
com.renesas.cdt.renesas.Compiler.option.incFileDirectories="${TCINSTALL}/include";
com.renesas.cdt.renesas.Configurator.option.cfgPath=""
com.renesas.cdt.renesas.Configurator.option.rtosName=None
com.renesas.cdt.renesas.Configurator.option.rtosPath=""
com.renesas.cdt.renesas.Configurator.option.rtosVersion=None
com.renesas.cdt.renesas.Linker.option.rom=D\=R;D_1\=R_1;D_2\=R_2;
com.renesas.cdt.renesas.Linker.option.typeOfOutputFileOption=Stype via absolute
com.renesas.cdt.renesas.StandardLibrary.option.complexC99=false
com.renesas.cdt.renesas.StandardLibrary.option.ctypec89=false
com.renesas.cdt.renesas.StandardLibrary.option.fenvC99=false
com.renesas.cdt.renesas.StandardLibrary.option.inttypesC99=false
com.renesas.cdt.renesas.StandardLibrary.option.libConfiguration=C99
com.renesas.cdt.renesas.StandardLibrary.option.mathc89=false
com.renesas.cdt.renesas.StandardLibrary.option.mathfc89=false
com.renesas.cdt.renesas.StandardLibrary.option.mode=com.renesas.cdt.renesas.StandardLibrary.option.buildOnlyWhenOptionsChanged
com.renesas.cdt.renesas.StandardLibrary.option.runtime=true
com.renesas.cdt.renesas.StandardLibrary.option.rxccomplexCPP=false
com.renesas.cdt.renesas.StandardLibrary.option.rxciosCPP=false
com.renesas.cdt.renesas.StandardLibrary.option.rxcnewCPP=true
com.renesas.cdt.renesas.StandardLibrary.option.rxcstringCPP=false
com.renesas.cdt.renesas.StandardLibrary.option.stdargc89=false
com.renesas.cdt.renesas.StandardLibrary.option.stdioc89=true
com.renesas.cdt.renesas.StandardLibrary.option.stdlibc89=true
com.renesas.cdt.renesas.StandardLibrary.option.stringc89=true
com.renesas.cdt.renesas.StandardLibrary.option.wcharC99=false
com.renesas.cdt.renesas.StandardLibrary.option.wctypeC99=false
com.renesas.cdt.rxc.HardwareDebug.Assembler.option.endian=Little-endian data
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.RAM=None
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.ROM=None
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.address=00000000
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.addressRegister=None
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.allocLowerBit=Lower bit
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.cpuType=RX200
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.denormalized=false
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.endian=Little-endian data
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.enumSize=false
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.packStructures=false
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.patchCode=None
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.precisionDouble=Single precision
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.registerFastInterrupt=None
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.replaceFromIntWithShort=false
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.roundTo=Nearest
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.saveacc=false
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signBitField=unsigned
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.signChar=unsigned
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.useDynamic=false
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.useTry=false
com.renesas.cdt.rxc.HardwareDebug.Compiler.option.widthDivergence=24 bit
com.renesas.cdt.rxc.HardwareDebug.StandardLibrary.option.endian=Little-endian data
eclipse.preferences.version=1


.settings\CodeGenerator\cgproject.cgp

4331.v540_cgproject_cgp.txt
<SerializableData>
  <SerializableData name="17c20985-edce-4aa7-9dc4-4f3bfd8d7ccf">
    途中省略(コード生成機能の各設定対象の個別設定データ)
  </SerializableData>
  <SerializableData name="3bec8c90-e2aa-4e26-8743-33a781338df7">
    <DataElement key="display" value="Device_PlatformCategory_RX231_512KB_R5F52318AxFP_Display">
    </DataElement>
    <DataElement key="romstartaddress" value="FFF80000">
    </DataElement>
    <DataElement key="name" value="R5F52318AxFP">
    </DataElement>
    <DataElement key="mcutypedisplay" value="Device_PlatformCategory_RX">
    </DataElement>
    <DataElement key="chipid" value="R5F52318AxFP">
    </DataElement>
    <DataElement key="devicename" value="RX231">
    </DataElement>
    <DataElement key="pin" value="100">
    </DataElement>
    <DataElement key="devicenamedisplay" value="Device_PlatformCategory_RX231">
    </DataElement>
    <DataElement key="romendaddress" value="FFFFFFFF">
    </DataElement>
    <DataElement key="ramendaddress" value="0000FFFF">
    </DataElement>
    <DataElement key="descriptor" value="Device_PlatformCategory_RX231_512KB_R5F52318AxFP_Description">
    </DataElement>
    <DataElement key="mcutype" value="RX">
    </DataElement>
    <DataElement key="id" value="R5F52318AxFP">
    </DataElement>
    <DataElement key="ramstartaddress" value="00000000">
    </DataElement>
    <DataElement key="rom" value="512KB">
    </DataElement>
    <SerializableData name="category">
      <DataElement key="display" value="Device_PlatformCategory_RX231_512KB">
      </DataElement>
      <DataElement key="id" value="PlatformCategory_RX231_512KB">
      </DataElement>
      <DataElement key="name" value="RX231_512KB">
      </DataElement>
      <SerializableData name="category">
        <DataElement key="display" value="Device_PlatformCategory_RX">
        </DataElement>
        <DataElement key="id" value="PlatformCategory_RX">
        </DataElement>
        <DataElement key="name" value="RX">
        </DataElement>
      </SerializableData>
    </SerializableData>
  </SerializableData>
  <SerializableData name="fd9225c4-f97d-4baa-a04b-c69949a0f486">
    <DataElement key="class" value="RenesasElectronics.MicomTool.CodeGenerator.Projects.ProjectRX.ProjectRXCreator">
    </DataElement>
    <DataElement key="fileext" value=".cgp">
    </DataElement>
    <DataElement key="id" value="Project_RX">
    </DataElement>
    <DataElement key="icon" value="Icons_Project_RX">
    </DataElement>
    <DataElement key="display" value="Project_RX_Display">
    </DataElement>
    <DataElement key="guid" value="{86E668EF-B34B-4733-82CB-72E453160D92}">
    </DataElement>
    <DataElement key="descriptor" value="Project_RX_Description">
    </DataElement>
    <DataElement key="name" value="ProjectRX">
    </DataElement>
  </SerializableData>
  <SerializableData name="9c804212-9f3e-4926-8eef-132c7518dc34">
    <DataElement key="class" value="RenesasElectronics.MicomTool.CodeGenerator.Compilers.CompilerCCRX.CompilerCreatorCCRX">
    </DataElement>
    <DataElement key="id" value="Compiler_CCRX">
    </DataElement>
    <DataElement key="icon" value="Icons_Compiler_CCRX">
    </DataElement>
    <DataElement key="display" value="Compiler_CCRX_Display">
    </DataElement>
    <DataElement key="guid" value="{F31F4D9E-990A-4f28-82D9-AA346DEDBDA7}">
    </DataElement>
    <DataElement key="descriptor" value="Compiler_CCRX_Description">
    </DataElement>
    <DataElement key="name" value="CCRX">
    </DataElement>
  </SerializableData>
</SerializableData>


.settings\CodeGenerator\cgprojectDatas.datas

1134.v540_cgprojectDatas_datas.txt
#
#Fri Dec 22 20:18:16 JST 2017
CGExist=true


v5.4.0ではプロジェクトのプロパティに以下の[依存関係スキャン]シートがあり、その設定によって、コンパイル時のコマンド(およびメイクファイルの内容)が変化する仕組みなっていました。また、もし.settings\Dependency_Scan_Preferences.prefsファイルが存在していなければ、このダイアログを開いた時もしくはビルド時に、自動的に生成される仕組みになっていました。そして、自動的に生成された設定は、普通にビルド時の振る舞いとして期待される動作、となるように設定されていました。(つまり、ソースコードを全く変更していないのに全ビルドが行われてしまう現象は発生しませんでした。)



そして、このダイアログでの選択により、以下のように.settings\Dependency_Scan_Preferences.prefsファイルの内容やコンパイル時のコマンドが変化しました。

(1-1) 依存関係なしでプロジェクトをビルド

Build\ project\ excluding\ the\ dependencies=true
Re-generate\ and\ use\ dependencies\ during\ project\ build=false
Use\ existing\ dependencies\ during\ project\ build=false
eclipse.preferences.version=1
'Building file: ../src/rx231.c'
'Invoking: Compiler'
ccrx -lang=c99 -output=obj="src/rx231.obj"  -include="C:\Renesas\CS_~1\CC\CC-RX\V203~1.00/include"  -debug -nomessage -isa=rxv2 -fpu -nologo  -define=__RX=1   "../src/rx231.c"
'Finished building: ../src/rx231.c'

(1-2) 依存関係をスキャンしてプロジェクトをビルド (これがデフォルトです)

Build\ project\ excluding\ the\ dependencies=false
Re-generate\ and\ use\ dependencies\ during\ project\ build=true
Use\ existing\ dependencies\ during\ project\ build=false
eclipse.preferences.version=1
'Scanning and building file: ../src/rx231.c'
'Invoking: Scanner and Compiler'
ccrx  -MM -MP -output=dep="src/rx231.d" -MT="src/rx231.obj" -MT="src/rx231.d" -lang=c99   -include="C:\Renesas\CS_~1\CC\CC-RX\V203~1.00/include"  -debug -nomessage -isa=rxv2 -fpu -nologo  -define=__RX=1   "../src/rx231.c"
ccrx -lang=c99 -output=obj="src/rx231.obj"  -include="C:\Renesas\CS_~1\CC\CC-RX\V203~1.00/include"  -debug -nomessage -isa=rxv2 -fpu -nologo  -define=__RX=1   "../src/rx231.c"
'Finished scanning and building: ../src/rx231.c'

(1-3) 既存の依存関係を使用してプロジェクトをビルド

Build\ project\ excluding\ the\ dependencies=false
Re-generate\ and\ use\ dependencies\ during\ project\ build=false
Use\ existing\ dependencies\ during\ project\ build=true
eclipse.preferences.version=1
'Building file: ../src/rx231.c'
'Invoking: Compiler'
ccrx -lang=c99 -output=obj="src/rx231.obj"  -include="C:\Renesas\CS_~1\CC\CC-RX\V203~1.00/include"  -debug -nomessage -isa=rxv2 -fpu -nologo  -define=__RX=1   "../src/rx231.c"
'Finished building: ../src/rx231.c'

もし.settings\Dependency_Scan_Preferences.prefsファイルが存在していなければ、以下の内容で自動的に生成され(これはデフォルトの設定に相当します)、その設定に従ったコマンドでコンパイルされました。

(1-4) Dependency_Scan_Preferences.prefsファイルが.settingsフォルダに存在しなかった場合

Build\ project\ excluding\ the\ dependencies=false
Re-generate\ and\ use\ dependencies\ during\ project\ build=true
Use\ existing\ dependencies\ during\ project\ build=false
eclipse.preferences.version=1
'Scanning and building file: ../src/rx231.c'
'Invoking: Scanner and Compiler'
ccrx  -MM -MP -output=dep="src/rx231.d" -MT="src/rx231.obj" -MT="src/rx231.d" -lang=c99   -include="C:\Renesas\CS_~1\CC\CC-RX\V203~1.00/include"  -debug -nomessage -isa=rxv2 -fpu -nologo  -define=__RX=1   "../src/rx231.c"
ccrx -lang=c99 -output=obj="src/rx231.obj"  -include="C:\Renesas\CS_~1\CC\CC-RX\V203~1.00/include"  -debug -nomessage -isa=rxv2 -fpu -nologo  -define=__RX=1   "../src/rx231.c"
'Finished scanning and building: ../src/rx231.c'

(2) e2 studio v6.1.0の場合

以下の設定でプロジェクトを生成させました。




生成されたファイルは以下の通りです。




.settings\com.renesas.cdt.managedbuild.renesas.ccrx.prefs

8713.v610_com_renesas_cdt_managedbuild_renesas_ccrx_prefs.txt
com.renesas.cdt.managedbuild.renesas.ccrx.common.option.checkRtos=unusedRtos
com.renesas.cdt.managedbuild.renesas.ccrx.rtosConfig.option.cfgFilePath=../generate/${ArtifactName}.cfg
com.renesas.cdt.managedbuild.renesas.ccrx.rtosConfig.option.rtosName=None
com.renesas.cdt.managedbuild.renesas.ccrx.rtosConfig.option.rtosPath=
com.renesas.cdt.managedbuild.renesas.ccrx.rtosConfig.option.rtosVersion=
eclipse.preferences.version=1


.settings\Dependency_Scan_Preferences.prefs

5516.v610_Dependency_Scan_Preferences_prefs.txt
DependecyMode=ScanBuildDep
eclipse.preferences.version=1


.settings\e2studio_project.prefs

6038.v610_e2studio_project_prefs.txt
#
#Fri Dec 22 20:26:40 JST 2017
activeConfiguration=com.renesas.cdt.managedbuild.renesas.ccrx.hardwaredebug.configuration.556832377


.settings\fitsettings.xml

4477.v610_fitsettings_xml.txt
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FITMODULE xmlns:ns2="com.renesas.tools.fitconfigurator.settings.SerializeData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="">
    <fitProject>true</fitProject>
</FITMODULE>


.settings\renesasPGModel.xml

1261.v610_renesasPGModel_xml.txt
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ccrxProjectGenerationModel>
    <fEndian>LITTLE</fEndian>
    <optionsDefault/>
</ccrxProjectGenerationModel>


.settings\CodeGenerator\cgproject.cgp

2703.v610_cgproject_cgp.txt
<SerializableData>
  <SerializableData name="17c20985-edce-4aa7-9dc4-4f3bfd8d7ccf">
    途中省略(コード生成機能の各設定対象の個別設定データ)
  <SerializableData name="3bec8c90-e2aa-4e26-8743-33a781338df7">
    <DataElement key="display" value="Device_PlatformCategory_RX231_512KB_R5F52318AxFP_Display">
    </DataElement>
    <DataElement key="romstartaddress" value="FFF80000">
    </DataElement>
    <DataElement key="name" value="R5F52318AxFP">
    </DataElement>
    <DataElement key="mcutypedisplay" value="Device_PlatformCategory_RX">
    </DataElement>
    <DataElement key="chipid" value="R5F52318AxFP">
    </DataElement>
    <DataElement key="devicename" value="RX231">
    </DataElement>
    <DataElement key="pin" value="100">
    </DataElement>
    <DataElement key="devicenamedisplay" value="Device_PlatformCategory_RX231">
    </DataElement>
    <DataElement key="romendaddress" value="FFFFFFFF">
    </DataElement>
    <DataElement key="ramendaddress" value="0000FFFF">
    </DataElement>
    <DataElement key="descriptor" value="Device_PlatformCategory_RX231_512KB_R5F52318AxFP_Description">
    </DataElement>
    <DataElement key="mcutype" value="RX">
    </DataElement>
    <DataElement key="id" value="R5F52318AxFP">
    </DataElement>
    <DataElement key="ramstartaddress" value="00000000">
    </DataElement>
    <DataElement key="rom" value="512KB">
    </DataElement>
    <SerializableData name="category">
      <DataElement key="display" value="Device_PlatformCategory_RX231_512KB">
      </DataElement>
      <DataElement key="id" value="PlatformCategory_RX231_512KB">
      </DataElement>
      <DataElement key="name" value="RX231_512KB">
      </DataElement>
      <SerializableData name="category">
        <DataElement key="display" value="Device_PlatformCategory_RX">
        </DataElement>
        <DataElement key="id" value="PlatformCategory_RX">
        </DataElement>
        <DataElement key="name" value="RX">
        </DataElement>
      </SerializableData>
    </SerializableData>
  </SerializableData>
  <SerializableData name="fd9225c4-f97d-4baa-a04b-c69949a0f486">
    <DataElement key="class" value="RenesasElectronics.MicomTool.CodeGenerator.Projects.ProjectRX.ProjectRXCreator">
    </DataElement>
    <DataElement key="fileext" value=".cgp">
    </DataElement>
    <DataElement key="id" value="Project_RX">
    </DataElement>
    <DataElement key="icon" value="Icons_Project_RX">
    </DataElement>
    <DataElement key="display" value="Project_RX_Display">
    </DataElement>
    <DataElement key="guid" value="{86E668EF-B34B-4733-82CB-72E453160D92}">
    </DataElement>
    <DataElement key="descriptor" value="Project_RX_Description">
    </DataElement>
    <DataElement key="name" value="ProjectRX">
    </DataElement>
  </SerializableData>
  <SerializableData name="9c804212-9f3e-4926-8eef-132c7518dc34">
    <DataElement key="class" value="RenesasElectronics.MicomTool.CodeGenerator.Compilers.CompilerCCRX.CompilerCreatorCCRX">
    </DataElement>
    <DataElement key="id" value="Compiler_CCRX">
    </DataElement>
    <DataElement key="icon" value="Icons_Compiler_CCRX">
    </DataElement>
    <DataElement key="display" value="Compiler_CCRX_Display">
    </DataElement>
    <DataElement key="guid" value="{F31F4D9E-990A-4f28-82D9-AA346DEDBDA7}">
    </DataElement>
    <DataElement key="descriptor" value="Compiler_CCRX_Description">
    </DataElement>
    <DataElement key="name" value="CCRX">
    </DataElement>
  </SerializableData>
</SerializableData>


.settings\CodeGenerator\cgprojectDatas.datas

3681.v610_cgprojectDatas_datas.txt
#
#Fri Dec 22 20:28:22 JST 2017
CGExist=true


v6.1.0ではプロジェクトのプロパティの[依存関係スキャン]シートが無くなっており、さらに、たとえ.settings\Dependency_Scan_Preferences.prefsファイルが存在していなくても自動的に生成されることは無く、かつ、ソースコードを全く変更していないのに全ビルドが行われてしまう現象が発生しました。



(2-1) Dependency_Scan_Preferences.prefsファイルが.settingsフォルダに以下の内容で存在した場合

DependecyMode=ScanBuildDep
eclipse.preferences.version=1
'Scanning and building file: ../src/rx231.c'
'Invoking: Scanner and Compiler'
ccrx -MM -MP -output=dep="src/rx231.d"  -MT="src/rx231.obj"  -MT="src/rx231.d" -isa=rxv2 -fpu -include="C:\Renesas\CS+\CC\CC-RX\V2.03.00\include" -lang=c99 -nomessage -debug -nologo  "../src/rx231.c"
ccrx -isa=rxv2 -fpu -include="C:\Renesas\CS+\CC\CC-RX\V2.03.00\include" -lang=c99 -nomessage -output=obj -obj_path="src" -debug -nologo "../src/rx231.c"
'Finished Scanning and building: ../src/rx231.c'

(2-2) Dependency_Scan_Preferences.prefsファイルが.settingsフォルダに存在しなかった場合

'Building file: ../src/rx231.c'
'Invoking: Compiler'
ccrx -isa=rxv2 -fpu -include="C:\Renesas\CS+\CC\CC-RX\V2.03.00\include" -lang=c99 -nomessage -output=obj -obj_path="src" -debug -nologo "../src/rx231.c"
'Finished Building: ../src/rx231.c'

[関連リンク]

・CS+で同様な現象が発生した件

CubeSuite+ で変更したファイル、影響のあるファイルのみをコンパイルしたい
japan.renesasrulz.com/cafe_rene/f/forum21/4402/cubesuite

(参) CS+ FAQ
support.renesas.com/hc/ja/sections/201929768-統合開発環境-CS-

・e2 studio v6でヘッダファイルを変更してもコンパイルされないことがある件

e2studioでのRXコンパイルについて
japan.renesasrulz.com/cafe_rene/f/forum5/4551/e2studio-rx

(参) e2 studio FAQ
support.renesas.com/hc/ja/sections/201929778-統合開発環境-e-studio-
 

Parents
  • こんにちは。NoMaYです。

    朝、目が覚めて、過去のことがようやく把握出来るようになった気がしましたので、更に試してみました。

    e2 studioでソースコードを全く変更していないのに全ビルドが行われてしまうトラブルが発生する手順は、以下の通りなのだと気付きました。(または、変更したソースが再コンパイルされるのは分かるが変更していないソースまでも何故か再コンパイルされてしまうトラブル、などもです。)

    (1) 以下のようなプロジェクトの[プロパティ]→[C/C++ビルド]→[ポリシーを更新]シートを一度でも開いてOKボタンを押した
    (1') ちなみに一度でも開いたら他のシートに移った後にOKボタンを押しても同様です
    (2) プロジェクトの名前を変更した
    (3) メニュー[プロジェクト]→[プロジェクトのビルド]を実行
    (3') あるいはツールバーの同機能のボタンや同機能のキーボードショートカットなどでも同様です



    なかなか事態が把握出来なかったのは、上の(1)の後に(2)を行って初めて発生するからであり、かつ、(1)はプロパティの中を迷っているうちに特に意識せずにうっかり開いてしまっていたからである、と思います。ですので、(2)に気付いても(1)に気付かなかったら、「以前にプロジェクト名を変更した時は問題無かったような記憶があるのに、今しがたプロジェクト名を変更したら全ビルドされるようになってしまった」という認識になることもあっただろう、と思います。

    case1) 一度も[ポリシーを更新]を開いてOKを押したことが無い → プロジェクト名を変更しても現象は発生しない

    1回目のビルド


    2回目以降のビルド: rx231.c は期待通りコンパイルされない


    case2) 一度でも[ポリシーを更新]を開いてOKボタン押したことが有る → プロジェクト名を変更すると現象が発生する

    1回目のビルド


    2回目以降のビルド: rx231.c が何故か再コンパイルされてしまう


    現象が発生してしまった → [ポリシーを更新]を開いて設定を修正した

    それ以降のビルド: rx231.c が再コンパイルされる現象は一旦解消されるが、、、プロジェクト名を再変更すると再発する、、、


    プロジェクト名を再変更した

    それ以降のビルド: rx231.c が再び何故か再コンパイルされてしまう


    それぞれのケースで.cprojectファイルの内容を調べると何が起きたのか(そして何故一旦解消されても再発するのか)分かると思います。

    プロジェクト生成直後

    .cprojectファイルの内容

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    </cproject>

    [ポリシーを更新]の表示


    case1) 一度も[ポリシーを更新]を開いてOKを押したことが無い

    プロジェクト名を変更した後の.cprojectファイルの内容 : 内容は変わらない

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
    </cproject>

    プロジェクト名を変更した後の[ポリシーを更新]の表示 : 表示は変わる


    case2) 一度でも[ポリシーを更新]を開いてOKボタン押したことが有る

    プロジェクト名を変更する前の.cprojectファイルの内容 : 内容は変わっている

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug">
                <resource resourceType="PROJECT" workspacePath="/rx231"/>
            </configuration>
        </storageModule
    </cproject>

    プロジェクト名を変更する前の[ポリシーを更新]の表示 : 表示は変わらない


    そしてプロジェクト名を変更した

    プロジェクト名を変更した後の.cprojectファイルの内容 : 内容は変わらない

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug">
                <resource resourceType="PROJECT" workspacePath="/rx231"/>
            </configuration>
        </storageModule>
    </cproject>

    プロジェクト名を変更した後の[ポリシーを更新]の表示 : 表示も変わらない


    現象が発生してしまった → [ポリシーを更新]を開いて設定を修正した

    [ポリシーを更新]を修正した後の.cprojectファイルの内容 : 内容は変わる

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug">
                <resource resourceType="PROJECT" workspacePath="/rx231_2"/>
            </configuration>
        </storageModule>
    </cproject>

    [ポリシーを更新]を修正した後の[ポリシーを更新]の表示 : 表示も変わる


    現象は一旦解消されますが、、、プロジェクト名を再変更すると再発します、、、

    プロジェクト名を再変更した後の.cprojectファイルの内容 : 内容は変わらない
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug">
                <resource resourceType="PROJECT" workspacePath="/rx231_2"/>
            </configuration>
        </storageModule>
    </cproject>

    プロジェクト名を再変更した後の[ポリシーを更新]の表示 : 表示も変わらない


    補足1) [ポリシーを更新]の内容を空にした場合の.cprojectの内容と[ポリシーを更新]の表示

    現象は発生します。(ただ、何かの手順の影響だと思うのですが、発生しないこともありました。)

    .cprojectファイルの内容

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug"/>
        </storageModule>
    </cproject>

    [ポリシーを更新]の表示


    補足2) 今のところは.cprojectファイルを元の状態に戻すにはエディタで編集する方法しか分かりません

    以下の赤字の部分を削除します。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug">
                <resource resourceType="PROJECT" workspacePath="/rx231"/>
            </configuration>
        </storageModule>
    </cproject>

     

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug">
                <resource resourceType="PROJECT" workspacePath="/rx231_2"/>
            </configuration>
        </storageModule>
    </cproject>

     

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        <storageModule moduleId="org.eclipse.cdt.core.settings">
        略
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
        <storageModule moduleId="refreshScope" versionNumber="2">
            <configuration configurationName="HardwareDebug"/>
        </storageModule>
    </cproject>

     

  • ほやです。

    CDTの未解決問題かもしれません。

    https://bugs.eclipse.org/bugs/show_bug.cgi?id=518748

Reply Children