Change History 2025#

Author:

Yasuhiro Inamura

Last Update:

Apr 24, 2025

4.0.250420 or later#

Apr 21 2025

[update:uGao:master] Add functions to change defalt labels of axes on DetectMap mode in M2Plot+

DATA_RDCT-163 夕顔:M2Plot+のDetecertMapモードでの挙動改良

DetectorMapモード時のプロット軸のラベルのデフォルトを”Bank”と”Pixel”に変更した。

また、SetLabels, SetUnits, showMessageのコマンドの場所を移動した。理由は以下。

  • 使用される変数の作成場所と設定場所がはなれているため

  • DetectMapモードでの変更よりも前に実行させないと上書きされるため

Apr 21 2025

[update:uGao:master] Add functions to remove x-axis tick on DetectMap mode in M2Plot+

DATA_RDCT-163 夕顔:M2Plot+のDetecertMapモードでの挙動改良

M2Plot+のDetectorMapモードでの表示でプロットの横軸に検出機IDとは別のIndexが表示されている。 DetectMapモードならば、このIndexは不要なのでD2Chart内で ax.set_xticks([]) を実行する必要がある。

ではこのDetectMapモードであることを示すフラグはどうするか。 このDetectMapモードかどうかの決定は、表示するデータに依存する。 当初はU2Paramsに含めることも考えたが、こちらはデータに関係なくプロッタ自身の属性であるので、データ依存のDetectMapモードには相応しくない。 特にU2Paramsはデフォルト保存されるので混乱を引き起こす。

よって、D2Chart::isDetectMapMode を設定し、 ax.set_xticks([]) を実行するかいなかを決定する。

  • u2dplotBase.py

    • ax.set_xticks([]) を実行するかいなかを決定するための`D2Chart::isDetectMapMode` を定義

  • U2IF.py

    • D2Chart::isDetectMapMode を設定するための`U2IF::SetDetectMapMode(bool)` を追加

  • M2PlotPlus.py

    • プロットする際に呼び出される OnShow() でデータがDetectMapモードで表示するか判別されるので、 U2IF::SetDetectMapMode(bool) で設定

Apr 21 2025

[bugfix:uGao:master] The problem that MPlot occurs error on reading text file including minus error values for masking rule of Manyo

DATA_RDCT-309 夕顔:MPlotでテキストファイルを読み込むとエラー

万葉コンテナのデータ点をマスクとして扱う場合、その点のエラー値をマイナスにするというルールがある。 これに則ったテキストファイルを読み込もうとすると、エラーとなる現象が起きるので修正した。

numpyやmatplotlibを最新のものに変更した後で発生したようなので、おそらくアップデートによりエラー値がマイナスではエラーとなるように仕様が変更された模様。

Apr 20 2025

[update:uGao:master] Improve pixel information indication on M2Plot+ and add M2Plot+ CUI commands to change axis inversion.

DATA_RDCT-163 夕顔:M2Plot+のDetecertMapモードでの挙動改良

M2Plot+のDetectorMapモードにおける以下の挙動を修正した。

  • PSD - Pixelの表示部分に余計なX, Yの実座標が表示されるのを止めた

  • DetectorMapモードではY軸の反転が制御できるべきだが、CUIにそのためのコマンドが用意されていなかったので追加した

Apr 20 2025

[bugfix:uGao:master] The problem that grid lines and axes ticks have disappeared on M2Plot+ plotter after bugfix of the problem that the zoom and pan functions are not working correctly on matplotlib version of 3.9.0 or later.

DATA_RDCT-308 夕顔:M2Plot+でGrid表示と軸の座標(ticks)が出なくなった

問題発生

このmatplotlibのバージョンが3.9.0以上で、M2Plot+, MPlotなどのプロッタ上でPanやZoomが効かない問題に対応した。 使用しているツールバーのZoomやPanを使用している時に、matplotlib 3.6以下の時は領域表示(D4Chart.regAxes)とデータ表示Axex(D4Chart.ax)の両方がZoomやPanの対象だったのに、3.9以降では領域表示(D4Chart.regAxes)のみが対象となってしまったからであろう。

この対処として Axes.sharex, Axes.shareyを利用したが、この結果、u2dplot関連で新たに以下の問題が発生した。 ただし、MPlot(FastPlotQt)では問題は起きていない。 DetectMapではZoom時にTicksが表示されないようだ。

M2Plot+(u2dplot)において、以下の問題が新たに発生した。

  • Grid表示できない

  • 軸の値(ticks)が表示されない

失敗した対処

対処として、u2dplot内でsharex, shareyを生かしたまま

# 領域スケールのラベルを消す
self.regAxes.set_xticks([])
self.regAxes.set_yticks([])

の部分を無効にしてみたが、Ticksのindexが出現して解決にはならなかったのでこのやり方は、少なくともu2dplotではペンディングとする。

最終的な対処

次の対処として、領域表示(D4Chart.regAxes)しかZoomやPanが効かないのであれば、適切なタイミングで、領域表示(D4Chart.regAxes)のスケールをデータ表示Axex(D4Chart.ax)に反映させることにした。

必要なのはD2Chart::PlotD2Chartで行っている

# 領域のスケールをカラーマップのスケールに合わせる
self.regAxes.set_xlim(self.ax.get_xlim())
self.regAxes.set_ylim(self.ax.get_ylim())

の逆の動作を適切なタイミングで実行するしかない。

調査したところ、MouseUpとMouseMoveのイベント発生時にD2Chart.regAxeのサイズをD2Chart.axに反映するようにすれば両者が追随する。 もう少し賢いやり方があるかもしれないが、とりあえず、この方法で改修を行なった。

  • u2dplot.py

    • D2Frame::OnMouseUp でZoom or Panが有効なとき、Matplotlibが3.9.0以上なら、スケールデータの反映

  • M2PlotPlus.py

    • M2PlotPlus::OnMouseUp で u2dplot.pyと同じ修正

  • u2dplotBase.py

    • 以前の修正をすべて元に戻す

Apr 17 2025

[bugfix:Utsusemi:4.0] The problem that arguments of SequenceEditor visualization can not be choosen for old type of VisualModule facade. (3)

DATA_RDCT-306 空蝉4:SequenceEditoの可視化問題

SequenceEditorのVisualizationで、古いタイプのVisualModuleファサード関数(引数の型の指定がない)で、コンボボックスとテキストボックスで内容のコンフリクト確認の部分で問題があったので修正した。

最終的な仕様は以下の通り

  • VisualModuleで[Def:XXX(YYYY,ZZZZ)]の型指定がある場合、合致するコマンド結果を引数コンボボックスに表示(テキストボックスは無効化)

  • VisualModuleで型指定がない場合、全てのコマンド結果を引数コンボボックスに表示+テキストボックスも有効化

    • テキストボックスに入力があればそちらを優先、テキストボックスが空であれば引数コンボボックスでの選択を優先

Apr 16 2025

[bugfix:Utsusemi:4.0] The problem that UtilsOnChoppers::FitOnChoppers occurs the import error on import sum from scipy.

Apr 16 2025

[bugfix:Utsusemi:4.0] The problem that arguments of SequenceEditor visualization can not be choosen for old type of VisualModule facade. (2)

DATA_RDCT-306 空蝉4:SequenceEditoの可視化問題

SequenceEditorのVisualizationで、古いタイプのVisualModuleファサード関数(引数の型の指定がない)では引数が選択できない問題があったので、とりあえず指定がない場合、全てのシーケンスコマンド結果のラベルを表示するようにした。

最終的な仕様は以下の通り

  • VisualModuleで[Def:XXX(YYYY,ZZZZ)]の型指定がある場合、合致するコマンド結果を引数コンボボックスに表示(テキストボックスは無効化)

  • VisualModuleで型指定がない場合、全てのコマンド結果を引数コンボボックスに表示+テキストボックスも有効化

Apr 16 2025

[bugfix:Utsusemi:4.0] The problem that arguments of SequenceEditor visualization can not be choosen for old type of VisualModule facade.

DATA_RDCT-306 空蝉4:SequenceEditoの可視化問題

SequenceEditorのVisualizationで、古いタイプのVisualModuleファサード関数(引数の型の指定がない)では引数が選択できない問題があったので、とりあえず指定がない場合、全てのシーケンスコマンド結果のラベルを表示するようにした。

Apr 15 2025

[update:Utsusemi-DNA:4.0] Update facade/VisualModule for latest SequenceEditor visualization function

空蝉のSequenceEditorの新しくなった可視化モジュールに対応させた。

Apr 15 2025

[update:Utsusemi:4.0] Update WiringInfo of BL14(AMR) by the correction for psd position and change bankInfo

Apr 15 2025

[update:Utsusemi:4.0] Update WiringInfo and DetectorInfo for BL14

Apr 11 2025

[bugfix:Utsusemi:4.0] The problem that UtsusemiGetNumOfMulTh does not work as expected.

UtsusemiGetNumOfMulThの挙動で、環境変数UTSUSEMI_MULTHがあった場合、CPU数などに関係なくこの環境変数を返す仕様となっていた。 想定していた動作はコンパイル時に指定したMULTH変数や、CPU数と比較して最も小さい値を返すというものだったので、そちらに修正した。

また同時にいくつかの関数がUtsusemiGetNumOfMulThと似た動作を別途コードにしていたので、全てこの関数に集約した。

Apr 10 2025

[bugfix:uGao:master] The problem that zoom and pan functions on plotter of DetectMap, M2Plot+ and MPlot are not working correctly on matplotlib version of 3.9.0 or later.

DATA_RDCT-301 空蝉夕顔:2D系プロッタのToolbarのPanおよびZoom機能が動作しない(matplotlib 3.9.0)

  • matplotlibのバージョンが3.9.0以上で、DetectMap, M2Plot+, MPlotなどのプロッタ上で、PanやZoomが効かない問題に対処した

  • matplotlibのバージョンが3.10.0以上で正しく動作しない問題もあったので同時に対処した

Apr 10 2025

[bugfix:Utsusemi:4.0] The problem that zoom and pan functions on plotter of DetectMap are not working correctly on matplotlib version of 3.9.0 or later.

DATA_RDCT-301 空蝉夕顔:2D系プロッタのToolbarのPanおよびZoom機能が動作しない(matplotlib 3.9.0)

  • matplotlibのバージョンが3.9.0以上で、DetectMapプロッタ上で、PanやZoomが効かない問題に対処した

Apr 9 2025

[bugfix:Utsusemi:4.0] Fixed SIK environ_ana.xml

Apr 9 2025

[update:Utsusemi:4.0] Update SIK WiringInfo from BL

Apr 9 2025

[bugfix:Utsusemi:4.0] The problem that zoom and pan functions on plotter of DetectMap are not working correctly on matplotlib version of 3.9.0 or later.

Apr 9 2025

[bugfix:uGao:master] The problem that zoom and pan functions on plotter of M2Plot+ and MPlot are not working correctly on matplotlib version of 3.9.0 or later.

DATA_RDCT-301 空蝉夕顔:2D系プロッタのToolbarのPanおよびZoom機能が動作しない(matplotlib 3.9.0)

  • matplotlibのバージョンが3.9.0以上で、DetectMap, M2Plot+, MPlotなどのプロッタ上で、PanやZoomが効かない問題に対処した

  • matplotlibのバージョンが3.10.0以上で正しく動作しない問題もあったので同時に対処した

4.0.250224 or later#

Feb 23 2025

[bugfix:manyo:0.3.4] The problem that default values of argument –numth in do_make_Manyo.py does not use inner default value of NUM_OF_THREAD

Feb 23 2025

[update:manyo:0.3.4] Simplify cords of #ifdef MULTH blocks in SearchInHeader

Feb 20 2025

[bugfix:Utsusemi:4.0] The problem that AddToMPlot function in SequenceEidtor’s Visualize dialog occurs run-time error.

DATA_RDCT-298 空蝉4:SequenceEditorのVisualize問題

SequenceEditorのVisualizeパネルで、あらかじめ表示したMPlotに対して、AddToMPlotでプロットを追加しようとすると “Run-time error!” が出現する問題に対応した。 この処理はpython-utsusemi-AMRとpython-utsusemi-SIKのVisualModule.pyに対して行った。

また、python-utsusemi-HPNやpython-utsusemi-VNRのVisualModuleQ.pyも、新しいSequenceEditorのVisualizeに対応するように置き換えた。

Feb 19 2025

[bugfix:manyo:0.3.4] The problem that compiling on macOS causes the warning like (warning: delete called on ‘EventDataMonitorBase’ that is abstract but has non-virtual destructor)

Feb 17 2025

[update:Utsusemi:4.0] Improve to show some comments on DetectMap only when Utsusemi debug mode is on.

Feb 17 2025

[bugfix:Utsusemi:4.0] The problem that the azimuth angle calculation for selected pixels by Append Sum on DetectMap is sometimes not correct.

DATA_RDCT-295 空蝉4:DetectMapにおける領域選択してMPlot表示時のAzimuth角度平均値計算の問題

DetectMapで領域を選択し、MPlotでTOF方向の”Append Sum”ボタンでプロットを行った時に、2thetaとAzimAngleを領域内で平均化してMPlotのタイトル部分に表示するが、その領域が水平面内を含む場合、Azimuth角度がプラスとマイナスの領域がそのまま平均化され、本来からかけ離れた値になってしまう。

各PixelのAzimAngleを平均するのではなく、平均のPixel位置からAzimAngleを計算するようにした。

ついでに一部ElementContaienrのヘッダ用のキーをリテラルで書いていた部分があったので、UtssuemiHeader::UTSUSEMI_KEY_HEAD_PIXELPOSITIONなどで置き換えた。

Feb 17 2025

[bugfix:uGao:master] The problem that the rotation of the axes indication types for selected point on MPlot graph.

DATA_RDCT-296 夕顔:MPlotで座標表示の変更がローテーションしない

MPlotでプロット上の点を指定して座標情報(”X”とか”Y”, “X, Y”など)をプロット上に表示する機能のうち、表示の方式を変更するアイコンをクリックすると表示方式が切り替わり、本来6種類の方式が一巡するようになっていた。 しかし、現状そうなっていないので、修正した。

Feb 14 2025

[update:Utsusemi:4.0] Improved CMakeLists.txt to use include(FindHDF5) and add new argument NEXUS_PATH to cmake procedure to give the path for the nexus format library

Feb 14 2025

[update:manyo:0.3.4] Add new argument NEXUS_PATH to cmake procedure to give the path for the nexus format library

Feb 14 2025

[update:manyo:0.3.4] Improved CMakeLists.txt to use include(FindHDF5)

Feb 13 2025

[update:uGao:master] Improve the order of movements for current GUI objects in MPlot by tab key.

Feb 7 2025

[update:Utsusemi:4.0] Improve CMakeLists.txt (move the Swig including commands)

Feb 2 2025

[update:Utsusemi:4.0] Improve scripts for the installation on macOS and README.

4.0.250131 or later#

Jan 31 2025

[update:uGao:devRefactoring01] Update to ignore the warning message

Jan 29 2025

[bugfix:Utsusemi:4.0] The problem that SumOfPixel function does not handle the masked PSDs and pixels correctly.

DATA_RDCT-293 空蝉4:SumOfPixelでマスク(Pixel, PSD)が効かない

SumOfPixelの中で、マスクのかかったPSDやPixelを正しく扱えない、すなわちSumするときにマスクのPixelなどを除外していなかったので、修正した。なお、以前のSumOfPixelコードはSumOfPixelOldと名前を変更して残してある。

Jan 28 2025

[update:Utsusemi:4.0] Improve codes to avoid warning messages on compiling on Windows (warning for cast of values types)(2).

Windowsでのコンパイルにおいて、変数の型変換はキャストを明示しないとWarningが出るので、それに対処した。

Jan 28 2025

[update:Utsusemi:4.0] Improve codes to avoid warning messages on compiling on Windows (warning for cast of values types).

Windowsでのコンパイルにおいて、変数の型変換はキャストを明示しないとWarningが出るので、それに対処した。

あと、使用しない変数の定義もWarningとなるので、コードから削除した。

Jan 28 2025

[bugfix:Utsusemi:4.0] The problems DumpAsText function in D4Mat2Slicer does not work correctly (All values in the output text are zero).

DATA_RDCT-292 空蝉4:D4Mat2Slicerの問題2025-01

D4Mat2Slicerで、DumpAsTextに関連する下記のような問題のうち、Windows版でDumpAsText機能でデータがおかしい(全部の軸の値や強度やエラー値が初期値のまま)問題に対処した。

Windowsで挙動を確認したところ、内部でfor文を使用した配列のコピーに失敗していたことがわかった。 その理由はfor文で使用する変数の初期化ができていなかったためだったので、その修正を行なった。

Jan 28 2025

[bugfix:Utsusemi:4.0] The problems around D4Mat2Slicer and its DumpAsText function

DATA_RDCT-292 空蝉4:D4Mat2Slicerの問題2025-01

D4Mat2Slicerで、DumpAsTextに関連する下記のような問題が報告されたので、対応した。

  • Memory Save ModeででDumpAsText機能でデータが空となる

    • これは内部で出力用のデータを作成している”MakeSlicedD4MatrixInner”関数内で、Memory Save Modeにおいて正しい挙動をしていなかったため、機能追加した。

  • Windows版でDumpAsText機能でデータが空になる

    • これは未確認だが、内部でfloat -> Doubleへのキャストに失敗している可能性がある(過去にWindows版で遭遇した記憶)ので、キャストを明示した(動作確認は別途行う)

  • DumpAsText機能で出力されたファイルに欠損がある

    • 欠損はファイルの末尾近傍で突然起こるので、値がないなどの内部でエラーではないようだ

    • なんとなくキャッシュが最後まで書き出されていない雰囲気

    • よくコードを見ていると fopen で開いているのに fclose していないことがわかったので修正した

  • D4Mat形式に書き出すときTOFマスクが有効ではない

    • D4matrix形式で書き出すときに、TOFマスクを考慮していないことがわかったので、機能追加した

あと、関数名にtypoがあったので修正した。

Jan 17 2025

[update:Utsusemi:4.0] Improve CMakeLists.txt to use FindSWIG and UseSWIG

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

CMakeLists.txt内でSWIGの設定に使用する find_package および include(${SWIG_USE_FILE})include で置き換えた。

#find_package(SWIG REQUIRED)
#include(${SWIG_USE_FILE})
include(FindSWIG)
include(UseSWIG)
Jan 17 2025

[update:Utsusemi:4.0] Update files for compiling.

Jan 17 2025

[bugfix:Utsusemi:4.0] Remove meaningless command.

Jan 17 2025

[bugfix:manyo/0.3.4] Fixed CMakeLists.txt for ImportError.

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

import時に下記のようなエラーが出る。

>>> import Manyo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/mlfsoft/manyo/Manyo/__init__.py", line 1, in <module>
    from .core import *
  File "/opt/mlfsoft/manyo/Manyo/core.py", line 10, in <module>
    from . import _ManyoCore
ImportError: /opt/mlfsoft/manyo/lib/libManyo.so: undefined symbol: _ZN11CppToPython18VectorStringToListESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EE

CppToPython.ccの中で PyMaj を使うプリプロセッサがあったがCMakeLists.txt内のcompile_optionsで -DPyMaj=3 の指定していなかったため発生した。 これを修正した。

またついでにCMakeLists.txt内でSWIGの設定に使用する find_package および include(${SWIG_USE_FILE})include で置き換えた。

#find_package(SWIG REQUIRED)
#include(${SWIG_USE_FILE})
include(FindSWIG)
include(UseSWIG)
Jan 8 2025

[updateUtsusemi:4.0] Improve CMakeLists.txt to enable to change MULTH in codes by given cmake argument

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

これまで固定されていたMULTHの値をcmakeの引数で変更( -DMULTH=n )できるようにした。

$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=/opt/mlfsoft/manyo -DMULTH=4
Jan 8 2025

[updateUtsusemi:4.0] Improve CMakeLists.txt according to guideline.

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

ガイドラインにしたがって、非推奨な書き方をなくす取り組みを行う。

参照:https://qiita.com/shohirose/items/5b406f060cd5557814e9

今回の改変

  • set(CMAKE_CXX_FLAGS)を使用しない

    • target_compile_options, target_compile_features, target_link_options

  • include_directories()を使用しない

    • target_include_directories

    • set_property(SOURCE Utsusemi. PROPERTY INCLUDE_DIRECTORIES)

  • file(GLOB)を使用しない

    • target_sources

    • install(FILES)

  • CMAKE_SOURCE_DIRを使用しない

    • PROJECT_BINARY_DIR

Jan 8 2025

[update:manyo:devCMake] Improve CMakeLists.txt to enable to change MULTH in codes by given cmake argument (MLF/CMakeLists.txt)

Jan 8 2025

[update:manyo:devCMake] Improve CMakeLists.txt to enable to change MULTH in codes by given cmake argument

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

これまで固定されていたMULTHの値をcmakeの引数で変更( -DMULTH=n )できるようにした。

$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=/opt/mlfsoft/manyo -DMULTH=4

あと、不要な -DPyMaj=3 のオプションも削除した。

Jan 7 2025

[update:manyo:0.3.4] Update do_make_Manyo.py to treat Ubuntu 24 and improve the logic to define DIST_NAME.

Jan 7 2025

[update:manyo:devCMake] Improve CMakeLilsts.txt according to guideline(4)

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

ガイドラインにしたがって、非推奨な書き方をなくす取り組みを行う。

参照: https://qiita.com/shohirose/items/5b406f060cd5557814e9

今回の改変

  • コード整理

    • 公開用ヘッダファイル収集やPythonモジュール等のインストールに使用していた FILE(GROB) の置き換え

    • include(UseSWIG)関連のコマンドをmanyo/CMakeLists.txtに移動し共有化

    • 不要なコメント文の削除

  • PRIVATE/PUBLIC/INTERFACEを適切に使う

    • コード内全てのPUBLICをPRIVATEに変更した

      • Manyo3PYTHON_wrap.cxx.o作成時に “fatal error: Header.hh: No such file”エラーが出た

    • target_include_directories` のPUBLICだけを残したところ、上記のエラーがなくなった

    • 他にもコンパイルの総数が減って高速化した(無駄なPUBLICはだめらしい)

Jan 7 2025

[update:manyo:devCMake] Improve CMakeLilsts.txt according to guideline(3)

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

ガイドラインにしたがって、非推奨な書き方をなくす取り組みを行う。

参照: https://qiita.com/shohirose/items/5b406f060cd5557814e9

今回の改変

  • コード整理

    • 公開用ヘッダファイル収集やPythonモジュール等のインストールに使用していた FILE(GROB) の置き換え

    • include(UseSWIG)関連のコマンドをmanyo/CMakeLists.txtに移動し共有化

    • 不要なコメント文の削除

今後の対応

  • PRIVATE/PUBLIC/INTERFACEを適切に使う

Jan 7 2025

[update:manyo:devCMake] Improve CMakeLilsts.txt according to guideline(2)

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

ガイドラインにしたがって、非推奨な書き方をなくす取り組みを行う。

参照:https://qiita.com/shohirose/items/5b406f060cd5557814e9

今回の改変

  • target_compile_options使用を進める

    • manyo/CMakeLists.txtからset(CMAKE_CXX_FLAGS “…”)を削除

    • manyo/core/CMakeLists.txt, manyo/MLF/CMakeLists.txt にtarget_compile_optionsを追加

    • 同時にtarget_link_optionsも必要(前回うまくいかなかったエラーへの対処)

うまくいかなかった部分

>>> import Manyo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/yinamura/dev/works/241125CMake/mlfsoft/manyo/Manyo/__init__.py", line 1, in <module>
    from .core import *
  File "/home/yinamura/dev/works/241125CMake/mlfsoft/manyo/Manyo/core.py", line 10, in <module>
    from . import _ManyoCore
ImportError: /home/yinamura/dev/works/241125CMake/mlfsoft/manyo/Manyo/_ManyoCore.so: undefined symbol: omp_get_thread_num

今後の対応

  • PRIVATE/PUBLIC/INTERFACEを適切に使う

  • コード整理

Jan 6 2025

[update:manyo:devCMake] Improve CMakeLilsts.txt according to guideline

DATA_RDCT-289 万葉ライブラリ:cmakeで書き換える

ガイドラインにしたがって、非推奨な書き方をなくす取り組みを行う。

参照:https://qiita.com/shohirose/items/5b406f060cd5557814e9

今回の改変

  • target_compile_optionsにstd=c++11などを追加しない -> target_compile_featuresを使用

  • file(GLOB …)を使用しない

    • target_sourcesを使用

  • CMAKE_SOURCE_DIRを使わない

    • 主にinclude_directoriesやinstallに使用していたが、それぞれ削除したり、PROJECT_BINARY_DIRを使用

うまくいかなかった部分

  • set(CMAKE_CXX_FLAGS, “…”)のように直接コンパイルオプションを足さない -> target_compile_options使用

これの修正を試みた。

target_compile_options(Manyo PUBLIC -O2 -fPIC -fopenmp ...)

という感じで、ManyoやManyoCore, MLF, ManyoMLFなどを置き換えたが、下記のように undefined symbol でエラーとなる。

>>> import Manyo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/yinamura/dev/works/241125CMake/mlfsoft/manyo/Manyo/__init__.py", line 1, in <module>
    from .core import *
  File "/home/yinamura/dev/works/241125CMake/mlfsoft/manyo/Manyo/core.py", line 10, in <module>
    from . import _ManyoCore
ImportError: /home/yinamura/dev/works/241125CMake/mlfsoft/manyo/Manyo/_ManyoCore.so: undefined symbol: omp_get_thread_num

_ManyoCore.soを作成する時点でのコンパイルオプション -fopenmp が渡されていないようだ。

今後の対応

  • target_compile_options使用を進める

  • PRIVATE/PUBLIC/INTERFACEを適切に使う