1

「modules」という名前のサブディレクトリ内のファイルを除いて、ビルド ディレクトリ内のすべてのファイルを削除する「クリーン」ターゲットを含むように CMake ビルドを構成する方法を見つけようとしています。

なぜ、あなたは尋ねるかもしれませんか?私たちのコードベースは現在 makefile ベースで、cmake に切り替えています。私の現在のセットアップは、modules/ サブフォルダーに必要なマクロを含む最上位に cmake/ ディレクトリを追加することです。その後、人々は cmake/ ディレクトリから「cmake ..」を実行できます。

多くの場合、CMakeLists.txt に変更を加えるときは、以前に実行した cmake が影響を与えていないことを完全に確認したいので、cmake/ ディレクトリでゼロから開始することをお勧めします。必要な modules/ ディレクトリがあるため、 rm -rf ./ だけではできません。可能であれば、それを復元する簡単な「cmake clean」の方法が必要です。

ご意見ありがとうございます。

4

1 に答える 1

2

I have done this in some of my codes. At the bottom of my CMakeLists.txt I add the line

# Add a distclean target to the Makefile
ADD_CUSTOM_TARGET(distclean COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/distclean.cmake)

I then add a file called distclean.cmake in my top level directory. This file contains a loop over files I want to delete:

# Loop over the directories/files and delete each one
FOREACH(D ${DEL}) # DEL is a list of the directories and files to delete
    IF(EXISTS ${D})
        FILE(REMOVE_RECURSE ${D})
    ENDIF()
ENDFOREACH()

You can take a look at my full distclean.cmake file here.

于 2013-04-30T07:25:40.167 に答える