CMakeの変数CMAKE_INSTALL_PREFIX
は実行時に引数で渡せば変更可能だが、デフォルト値を変えたい場合にどうするか、という話。
解決方法
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT
という変数を使う。
https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.html
この変数はユーザによってCMAKE_INSTALL_PREFIX
が変更されていない場合にTRUEになるため、以下のように利用するとデフォルト値を変えることができる。
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX /path/to/default CACHE PATH "..." FORCE)
endif()
ダメな例
その1
以下のように書いた場合、CMAKE_INSTALL_PREFIX
はそもそも定義済みなため、if文の条件を満たせない。
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX /path/to/default CACHE PATH "..." FORCE)
endif()
その2
間違ってはいないがUNIX系でしか動かない(Windows用の設定を書けばいいという話ではない)。
if(CMAKE_INSTALL_PREFIX STREQUAL "/usr/local")
set(CMAKE_INSTALL_PREFIX /path/to/default CACHE PATH "..." FORCE)
endif()