2

/etc/init.dディレクトリにファイルをインストールしたい

私はコードを書きました

INSTALL(FILES  ${CMAKE_SOURCE_DIR}/app/script/appd  DESTINATION /etc/init.d/appd)

しかし、cmakeを使用してパッキングコードを実行すると、エラーが発生します

CMake Error at /home/vivek/workspace/app/build/standalone/cmake_install.cmake:54 (FILE):
  file cannot create directory: /etc/init.d/appd.  Maybe need
  administrative privileges.

/etc/init.dディレクトリ内にファイルをインストールするようにcmakeを設定するにはどうすればよいですか?

4

2 に答える 2

4

これを行うことができますが、明示的に設定する必要がある場合があります。

set(CPACK_SET_DESTDIR ON)

先立って:

include(CPack)

CMakeLists.txt ファイルで。(これは、2.8.3 より前の CMake/CPack の古いバージョンに対してのみ行う必要があります)

これを行う必要があるのは、インストールされたファイルの 1 つの DESTINATION としてフル パス名を指定しているためです。パッキング段階でこれを適切に行うために、CPack は「make install」呼び出しで DESTDIR 環境変数を使用する必要があります。

後方互換性の理由から、デフォルトではこれを自動的に行いませんでした。

しかし、このバグはバージョン 2.8.3 で修正され、フル パス名を使用するインストール ルールで透過的かつ自動的に実行できるようになりました。

http://public.kitware.com/Bug/view.php?id=7000

できれば、rpm パッケージに対して CPACK_SET_DESTDIR を ON にするか、自動修正を含む最新バージョンの CMake/CPack を使用してください。

于 2011-12-09T15:42:54.830 に答える
-1

できません。make installできることは、管理者権限でアプリを実行するようにユーザーに依頼することだけです。

また、sudoコマンドの存在を検出add_custom_command()して、sudoを使用してファイルをインストールすることもできます。

于 2011-12-09T13:55:40.650 に答える