On 11/14/2011 09:31 PM, Jookia wrote: > I have the following code: > > # ---------- DOXYGEN > > find_package(Doxygen) > > set(docsDir "${CMAKE_BINARY_DIR}/docs/") > > add_custom_command(OUTPUT ${docsDir} > COMMAND ${CMAKE_COMMAND} "-E" "make_directory" > ${docsDir} VERBATIM) > > add_custom_target("docs" > COMMAND "${DOXYGEN_EXECUTABLE}" > "${CMAKE_SOURCE_DIR}/../doxygen/doxyfile" > WORKING_DIRECTORY ${docsDir} > DEPENDS ${docsDir}) > > set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES > "${docsDir}") > > Which causes a circular conflict. But when I change the docsDir to > "${CMAKE_BINARY_DIR}/docs2/", I no longer get the error. > > Is there a way to fix this?
The "docs" custom command is integrated in the "docs" custom target's Makefile with a relative path, so there are dependencies of the type "docs" (custom target) on "docs" (custom command's output) which are ignored by Make. Thus, the "docs" directory is not created, and the custom target fails. In general, it's a bad idea to have targets with the same name as files/directories they depend on. In order to solve this issue, add another custom target, say, docdir which depends on the custom command's output; this will decouple the "docs" custom target from the custom command. Finally, establish the dependency of "docs" on "docdir" by ADD_DEPENDENCIES(): CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) PROJECT(DOCS NONE) SET(CMAKE_VERBOSE_MAKEFILE ON) ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/docs COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/docs) ADD_CUSTOM_TARGET(docdir DEPENDS ${CMAKE_BINARY_DIR}/docs) ADD_CUSTOM_TARGET(docs COMMAND ${CMAKE_COMMAND} -E echo "custom target docs" WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/docs) ADD_DEPENDENCIES(docs docdir) Regards, Michael -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake