web-dev-qa-db-ja.com

CMAKE_INSTALL_PREFIXの使用方法

デフォルトの/ usr/localの代わりに/ usrにインストールする、インストールターゲットでMakefileを生成します。ビルドディレクトリがソースサブディレクトリで実行されると仮定して、次を実行します。

cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..

CMakeCache.txtの内容:CMAKE_INSTALL_PREFIX:PATH=/usr(OK?)

今私は実行します:

 make 
 make install 

すべてのファイルはまだusr/localにインストールされています。なにが問題ですか?

編集:CMakeLists.txtプロジェクトファイルにはCMAKE_INSTALL_PREFIXはありません。 cmakeを実行する前に、出力ディレクトリからすべてを削除します。 CMakeLists.txtのインストールディレクティブは次のようになります。

install(TARGETS mylibrary DESTINATION lib)

82
Alex F

それは( docs を参照してください):

cmake -DCMAKE_INSTALL_PREFIX=/usr ..
107
Job

この変数を使用するには2つの方法があります。

  • jobが述べたように、コマンドライン引数として渡します:

    cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..

  • CMakeLists.txtで値を割り当てます:

    SET(CMAKE_INSTALL_PREFIX < install_path >)

    しかし、前に配置することを忘れないでくださいPROJECT(< project_name>)コマンド、そうでなければ動作しません!

21
ryan_tu

ただし、PROJECT(<project_name>)コマンドの前に配置することを忘れないでください。そうしないと機能しません。

Cmakeを使用した最初の週-数年のGNU autotoolsの後-私はまだ学んでいます(m4マクロを書くよりは良い)が、CMAKE_INSTALL_PREFIXの変更after設定プロジェクトはより良い場所。

CMakeLists.txt

cmake_minimum_required (VERSION 2.8)

set (CMAKE_INSTALL_PREFIX /foo/bar/bubba)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")
project (BarkBark)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")
set (CMAKE_INSTALL_PREFIX /foo/bar/bubba)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")

最初の実行(キャッシュなし)

CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- The C compiler identification is GNU 4.4.7
-- etc, etc,...
CIP = /usr/local (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- Configuring done
-- Generating done

二回目

CIP = /foo/bar/bubba (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- Configuring done
-- Generating done

間違っている場合は教えてください、私は多くのことを学ぶ必要があります。楽しいです。

5
Jim