cmake変数はユーザーが変更していない場合のみ設定できますか?変数はtestdir
とtestdir/subdir
に初期化されている最初の実行でcmake変数がユーザーによって変更されていない場合は、それを設定します
set(DIR "testdir" CACHE PATH "main directory")
set(SUBDIR ${DIR}/subdir CACHE PATH "subdirectory")
:
私はこの変数を持っています。ユーザーがSUBDIR
を変更せずにDIR
と再放送cmakeのを変更し
、私はSUBDIR
パスを維持したい一方で、ユーザーがそれを変更する場合、新しいSUBDIR
パスを生成したいと思います。
DIR
が変更されたのであればSUBDIR
は、DIR
の新しい値に基づいて、新しいデフォルト値に設定する必要があり、SUBDIR
を前に変更されませんでした。
['MODIFIED'](https://cmake.org/cmake/help/latest/prop_cache/MODIFIED.html)キャッシュ変数プロパティを使用することができますが、ドキュメントには「設定しない」というメッセージが表示されます。おそらく、if文で修正をチェックする方が良いでしょうか?したがって 'SUBDIR'が' testdir/subdir'と等しくなければ 'SUBDIR'を使います。 – Florian
if文の問題は、最初の設定の後に '' DIR''を変更すると、 '' SUBDIR''は変更されません(つまり、古いデフォルトにとどまります)。 – allo