Bill Lorensen wrote:
Folks,

Most CMake projects use TRY_COMPILE and CMake macros to test for include files, flags, capabilities of the compiler etc. The CMake/Modules macros append the output of these commands to ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log or ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log. The location of these files is by convention.

1) The CMake/Module/CheckIncludeFiles.cmake stores its output in : ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log. Note the duplicate use of ${CMAKE_FILES_DIRECTORY}. Is this a bug?

Yup, sounds like a bug...  I will fix it.

2) ITK and Slicer3 (and I suspect other cmake projects) do not remove these two files. Consequently, these two files grow over time since the output is APPENDed. Certainly if a project cleans its ${CMAKE_BINARY_DIR} before each build, then this is not a problem. But in ITK and Slicer3, many of our builds are not cleaned routinely. I looked at a couple of my nightly and continuous builds and they had very large log files. I have modified the ITK CMakeLists.txt to remove the CMakeOutput.log and CMakeError.log files.

The problem is if you clear it out each time CMake is run, then you won't get to see the output from previous runs, and might loose some information. CMake will re-run anytime a cmake input file is changed. I would think it would be better to put the remove into the continuous script or the nightly script instead of the CMakeLists.txt file for ITK. If there are issues, these files are very useful to have when debugging build problems for ITK.
3) That brings me to a project-specific issue. I noticed that ITK sometimes APPENDs the output to ${CMAKE_BINARY_DIR}/CMakeOutput.log and other times to ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log. So, we have to REMOVE both files. That's when I discovered the 3rd location used in CheckIncludeFiles.cmake.

All this stuff should be in ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}. The CMAKE_FILES_DIRECTORY was added in 2.4.X, so ITK must have some files that pre-date that feature.

-Bill
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to