ビルドプロセスの一環として、Webサーバーlighttpdをビルドしています。外部プロジェクトからコピーしたファイルを消去する
CMakeLists.txt
以下が動作している:
include(ExternalProject)
ExternalProject_Add(
lighttpd
URL ${PROJECT_SOURCE_DIR}/ext/lighttpd.tar.gz
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_OUTPUT_PATH}/lighttpd
)
ExternalProject_Add_Step(
lighttpd copy2bin
COMMAND ${CMAKE_COMMAND} -E copy_directory ${EXTERNAL_OUTPUT_PATH}/lighttpd/sbin ${EXECUTABLE_OUTPUT_PATH}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${EXTERNAL_OUTPUT_PATH}/lighttpd/lib/lighttpd ${LIBRARY_OUTPUT_PATH}
DEPENDEES install
)
Iはmake
を入力するcopy2bin
ステップで行われるように、得られたバイナリとライブラリは、それぞれbin/
とlib/
です。ただし、make clean
と入力するとファイルが消去されません。
clean
を呼び出すときに、bin/
とlib/
lighttpdファイルをクリアするようにCMakeに通知するにはどうすればよいですか?
私はこれを行うことができるより良い方法はありますか?私はGitHubで見つけたものを基本的にモデル化しました。
これは私のトップレベルのCMakeListsです:
# Specify the minimum version for CMake
cmake_minimum_required(VERSION 3.5)
# Project's name
project(CMakeTest)
# Set the output folder where your program will be created
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
set(EXTERNAL_OUTPUT_PATH ${CMAKE_BINARY_DIR}/ext_install)
add_subdirectory(ext) #Contains CMakeLists above
編集:ADDITIONAL_MAKE_CLEAN_FILES
と
set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
"${EXTERNAL_OUTPUT_PATH}"
"${EXECUTABLE_OUTPUT_PATH}/lighttpd"
"${EXECUTABLE_OUTPUT_PATH}/lighttpd-angel"
)
私はこれを試しましたが、 'make clean 'や' ninja clean'の後でさえ、 'lighttpd'が' $ {EXECUTABLE_OUTPUT_PATH} 'の中にまだ表示されています – RPGillespie
' $ {LIBRARY_OUTPUT_PATH}あなたの質問を編集し、 'bin /'と 'lib /'の正確な内容を追加してください – wasthishelpful
いいえ、lighttpdファイルは 'bin /'や 'lib /'から消去されませんでした。私はいくつかの文脈を与えるために私の質問を更新しました – RPGillespie