Did it through folder deletion as noted above! New targets for clean and rebuild.
# remove_recurse.cmake
message("Files for removal:")
string (REPLACE " " "\n " FILES_LIST_ "${FILES_}") # <--- ";" is missing without "\;"
message(" " ${FILES_LIST_})
file(REMOVE_RECURSE "${FILES_}")
# CMakeLists.txt
add_custom_target(${PROJECT_NAME}-clean
COMMENT "Cleaning `${PROJECT_NAME}` target:"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -DFILES_="${PROJECT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}.dir/src/"
-P "misc/script/remove_recurse.cmake"
)
add_custom_target(${PROJECT_NAME}-rebuild
COMMENT "Rebuilding `${PROJECT_NAME}` target:"
DEPENDS ${PROJECT_NAME}-clean
COMMAND ${CMAKE_COMMAND} --build "." --target ${PROJECT_NAME}
)
Output
[main] Building folder: bplan
[build] Starting build
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build C:/dan/dev/bplan/out/build/msvc-dbg --parallel 4 --target bplan-rebuild
[build] [0/2] Re-checking globbed directories...
[build] [1/2] Cleaning `bplan` target:
[build] Files for removal:
[build] C:/dan/dev/bplan/out/build/msvc-dbg/CMakeFiles/bplan.dir/src/
[build] [2/2] Rebuilding `bplan` target:
[build] [0/2] Re-checking globbed directories...
[build] [1/11] Building CXX object CMakeFiles\bplan.dir\src\int\imgui\tools\align_text.cpp.obj
[build] [2/11] Building CXX object CMakeFiles\bplan.dir\src\app\MainViewportMenuBar.cpp.obj
[build] [3/11] Building CXX object CMakeFiles\bplan.dir\src\app.cpp.obj
[build] [4/11] Building CXX object CMakeFiles\bplan.dir\src\app\DataTreeEditor.cpp.obj
[build] [5/11] Building CXX object CMakeFiles\bplan.dir\src\app\MainWindow.cpp.obj
[build] [6/11] Building CXX object CMakeFiles\bplan.dir\src\app\data\data.cpp.obj
[build] [7/11] Building CXX object CMakeFiles\bplan.dir\src\test\<file>.cpp.obj
[build] [8/11] Building CXX object CMakeFiles\bplan.dir\src\test\<file>.cpp.obj
[build] [9/11] Building CXX object CMakeFiles\bplan.dir\src\main.cpp.obj
[build] [10/11] Building CXX object CMakeFiles\bplan.dir\src\test\<file>.cpp.obj
[build] [11/11] Linking CXX executable C:\dan\dev\bplan\bplan.exe
[driver] Build completed: 00:00:06.965
[build] Build finished with exit code 0
Pity that add_custom_target
accepts only cmd
commands and not cmake functions. Is it an interesting idea to add FUNCTION
feature as for COMMAND
alternative to CMake?
Also little flaw is that output flushes only after full completion, so no active build tracking .
Comments and improvements are welcomed!