View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0009971CMakeCMakepublic2009-11-25 14:072016-06-06 13:37
ReporterShane Dixon 
Assigned ToDavid Cole 
PrioritynormalSeveritymajorReproducibilityalways
StatusclosedResolutionduplicate 
PlatformOSOS Version
Product VersionCMake-2-8 
Target VersionFixed in Version 
Summary0009971: Parameters pass to command-line entirely wrong
DescriptionTrying to call doxygen using a doxyfile configuration file located in ${PROJECT_BINARY_DIR}/Doxyfile. See additional information for exact code. When passing the command to the command-line, it sends "doxygen C:" instead of "doxygen C:/temp/deploy2/Doxyfile" which is what the verbose output of nmake says it should be outputting. If I copy the command generated by nmake

"C:\Program Files\doxygen\bin\doxygen.exe" C:/temp/deploy2/Doxyfile

It runs just fine. Here is the output when it fails:

C:\temp\deploy2>nmake verbose=1 build_api_docs

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

        "C:\Program Files\CMake 2.8\bin\cmake.exe" -HC:\workspace\MyProj -BC:\temp\deploy2 --check-build-system CMakeFiles\Makefile.cmake 0
        "C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe" -f CMakeFiles\Makefile2 /nologo - build_api_docs
        "C:\Program Files\CMake 2.8\bin\cmake.exe" -HC:\workspace\MyProj -BC:\temp\deploy2 --check-build-system CMakeFiles\Makefile.cmake 0
        "C:\Program Files\CMake 2.8\bin\cmake.exe" -E cmake_progress_start C:\temp\deploy2\CMakeFiles 1
        "C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe" -f CMakeFiles\Makefile2 /nologo -L CMakeFiles\build_api_docs.dir\all
        "C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe" -f CMakeFiles\build_api_docs.dir\build.make /nologo -L CMakeFiles\build_api_docs.dir\depend
        "C:\Program Files\CMake 2.8\bin\cmake.exe" -E cmake_depends "NMake Makefiles" C:\workspace\MyProj C:\workspace\MyProj C:\temp\deploy2 C:\temp\deploy2 C:\temp\deploy2\CMakeFiles\build_api_docs.dir\DependInfo.cmake --color=
        "C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe" -f CMakeFiles\build_api_docs.dir\build.make /nologo -L CMakeFiles\build_api_docs.dir\build
        "C:\Program Files\CMake 2.8\bin\cmake.exe" -E cmake_progress_report C:\temp\deploy2\CMakeFiles
[ 0%] Generate the doxygen documentation into C:/temp/deploy2/docs/api.
        cd C:\workspace\MyProj
        "C:\Program Files\doxygen\bin\doxygen.exe" C:/temp/deploy2/Doxyfile
Error: file `C:' not found
Searching for include files...
Additional Information
Here is the code in the top-level CMakeLists.txt:
IF( DOXYGEN_FOUND )
    MESSAGE( STATUS "${PROJECT_SOURCE_DIR}/Doxyfile.in --> ${PROJECT_BINARY_DIR}/Doxyfile" )
    CONFIGURE_FILE(
      "${PROJECT_SOURCE_DIR}/Doxyfile.in"
      "${PROJECT_BINARY_DIR}/Doxyfile"
      IMMEDIATE @ONLY)
    MESSAGE( STATUS "${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile" )
    ADD_CUSTOM_TARGET(build_api_docs ${DOXYGEN_EXECUTABLE} "${PROJECT_BINARY_DIR}/Doxyfile"
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
        COMMENT "Generate the doxygen documentation into ${PROJECT_BINARY_DIR}/docs/api.")
ENDIF( DOXYGEN_FOUND )
TagsNo tags attached.
Attached Files

 Relationships
duplicate of 0009963closedDavid Cole Passing command-line arguments to ExternalProject truncates variables 

  Notes
(0018590)
Shane Dixon (reporter)
2009-11-25 14:08

Might be related to this other but I reported. It looks similar:
http://public.kitware.com/Bug/view.php?id=9963 [^]
(0018592)
Shane Dixon (reporter)
2009-11-25 14:12

I uninstalled and reinstalled CMake 2.8 from the version I downloaded from the web to make sure I had everything up to date, but no success. I also created a new build directory but that also failed.
(0018593)
Shane Dixon (reporter)
2009-11-25 14:26

If I hardcode the value, it works:

    ADD_CUSTOM_TARGET(build_api_docs ${DOXYGEN_EXECUTABLE} C:\\temp\\deploy2\\Doxyfile
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
        COMMENT "Generate the doxygen documentation into ${PROJECT_SOURCE_DIR}/docs/api.")

If I hardcode the value with forward slashes, it fails:

    ADD_CUSTOM_TARGET(build_api_docs ${DOXYGEN_EXECUTABLE} C:/temp/deploy2/Doxyfile
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
        COMMENT "Generate the doxygen documentation into ${PROJECT_SOURCE_DIR}/docs/api.")

If I copy and paste this from the verbose output of the nmake output, it works:

"C:\Program Files\doxygen\bin\doxygen.exe" C:/temp/deploy2/Doxyfile

It strikes me as odd that running manually works exactly as it's shown in nmake, but when nmake actually runs it, it fails.
(0018594)
Shane Dixon (reporter)
2009-11-25 14:34

This is what ends up in the makefile that actually runs the command:

CMakeFiles\build_api_docs:
    $(CMAKE_COMMAND) -E cmake_progress_report C:\temp\deploy2\CMakeFiles $(CMAKE_PROGRESS_1)
    @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Generate the doxygen documentation into C:/workspace/SIS/docs/api."
    cd C:\workspace\SIS
    "C:\Program Files\doxygen\bin\doxygen.exe" C:/temp/deploy2/Doxyfile
    cd C:\temp\deploy2

Again if I copy and paste just the one doxygen line and run it, it works. When I run "nmake build_api_docs", it fails. Could it be an environment issue?
(0018623)
Shane Dixon (reporter)
2009-12-01 13:29

I was able to work around it with this code:

IF( DOXYGEN_FOUND )
    SET( DOXY_CONFIG "\"${CMAKE_CURRENT_BINARY_DIR}/Doxyfile\"" )
    MESSAGE( STATUS "Configured ${PROJECT_SOURCE_DIR}/Doxyfile.in --> ${DOXY_CONFIG}" )
    CONFIGURE_FILE(
      "${PROJECT_SOURCE_DIR}/Doxyfile.in"
      "${PROJECT_BINARY_DIR}/Doxyfile"
      @ONLY)
    MESSAGE( STATUS "${DOXYGEN_EXECUTABLE} ${DOXY_CONFIG}" )
    ADD_CUSTOM_TARGET(build_api_docs ${DOXYGEN_EXECUTABLE} "${DOXY_CONFIG}"
        #WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
        COMMENT "Generate the doxygen documentation into ${PROJECT_SOURCE_DIR}/docs/api.")
ENDIF( DOXYGEN_FOUND )

Basically, I had to double-escape the DOXY_CONFIG variable so that it gets quoted when passed to the command-line. Oddly this isn't required when I copy and paste the command on the command-line...not quotes are necessary, but escaping a few quotes in CMake fixes the issue in CMake.
(0022143)
David Cole (manager)
2010-09-08 17:45

dup of 9963 -- when that one is fixed, this one will be also...
(0022185)
David Cole (manager)
2010-09-10 19:00

Related issue 0009963 is now resolved; fixed in CMake 'next'; this one should be too...
(0024604)
David Cole (manager)
2011-01-11 18:05

Closing resolved issues that have not been updated in more than 3 months.

 Issue History
Date Modified Username Field Change
2009-11-25 14:07 Shane Dixon New Issue
2009-11-25 14:08 Shane Dixon Note Added: 0018590
2009-11-25 14:12 Shane Dixon Note Added: 0018592
2009-11-25 14:26 Shane Dixon Note Added: 0018593
2009-11-25 14:34 Shane Dixon Note Added: 0018594
2009-12-01 13:29 Shane Dixon Note Added: 0018623
2010-09-08 17:44 David Cole Relationship added duplicate of 0009963
2010-09-08 17:44 David Cole Status new => assigned
2010-09-08 17:44 David Cole Assigned To => David Cole
2010-09-08 17:45 David Cole Note Added: 0022143
2010-09-08 17:45 David Cole Status assigned => resolved
2010-09-08 17:45 David Cole Resolution open => duplicate
2010-09-10 19:00 David Cole Note Added: 0022185
2011-01-11 18:05 David Cole Note Added: 0024604
2011-01-11 18:05 David Cole Status resolved => closed
2016-06-06 13:37 Brad King View Status private => public


Copyright © 2000 - 2018 MantisBT Team