web-dev-qa-db-ja.com

CMakeでディレクトリを作成する

CMakeでは、ディレクトリがまだ存在しない場合は作成します。これどうやってするの?

119
Jookia

いつディレクトリを作成しますか?

ビルドシステム生成時

CMakeがビルドシステムを生成するときにディレクトリを作成するには、

_file(MAKE_DIRECTORY ${directory})
_

ビルド時に

add_custom_command()コマンド(生成されたビルドシステムにカスタムビルドルールを追加する)およびadd_custom_target()コマンド(出力なしのターゲットを追加して常にビルドされる)で、ビルド時に実行するコマンドを指定します。コマンド_${CMAKE_COMMAND} -E make_directory_を実行してディレクトリを作成します。例えば:

_add_custom_target(build-time-make-directory ALL
    COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
_

インストール時

インストール時にディレクトリを作成するには、

_install(DIRECTORY DESTINATION ${directory})
_
207
Chin Huang

インストール時にディレクトリを作成するには、

install(DIRECTORY DESTINATION ${directory})

これらは両方設定時に実行されます:

file(MAKE_DIRECTORY ${directory})
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

ビルド中に作成するには、カスタムターゲットを使用します。

add_custom_target(mytargetname ALL COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})
19
smarquis

Chin Huangの返信に加えて、ビルド時にadd_custom_command

add_custom_command(TARGET ${target_name} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${directory})

また、ディレクトリがPRE_BUILD |で作成される瞬間を変更することもできます。 PRE_LINK | POST_BUILDパラメーター。

3