Help us understand the problem. What is going on with this article?

CMAKE_INSTALL_PREFIXの初期値を変更する

More than 1 year has passed since last update.

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()
kenyabe
組み込みSW開発がメインのプログラマです。自動化大好き。 Editor: Emacs(Spacemacs)/Terminal: Fish
aptpod
"日本のIoT、M2Mを牽引するテクノロジーカンパニーです。⾃動⾞やロボット・産業機械などから短周期に発生する制御・センサーデータをモバイル・インターネット網を介し、⾼速・大容量且つ安定的に、そして双方向に伝送し、回収データの可視化・解析や遠隔制御を実現するプロダクト開発を行っています。"
https://www.aptpod.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away