Mike Jackson wrote:
On May 11, 2007, at 7:55 AM, Angel Riesgo wrote:
My second question is how I can prevent CMake from adding "debug" and "release" intermediate directories to the output path. In the CMakeLists.txt file, I am setting LIBRARY_OUTPUT_PATH to a path ending in lib/win/, but the Visual C++ project always has an extra $(OutDir) appended to that. This means that the actual output directory ends up being lib/win/debug or lib/win/release, which is not what we want.
Visual Studio adds the Debug and Release folders on its own. I have not found a way to change this although my knowledge of VC++ is limited.
Ignoring CMake, Visual Studio sets these directories via the Output Directory project property. If the Linker Output File is a relative path, the final name is Output Directory + Linker Output File. If the Linker Output File is an absolute path, the final destination is just Linker Output File.

In CMake, Linker Output File is an absolute path. The path scoping is set by CMake itself. For my project, we have an image/ directory which is supposed to be a near representation of the shipping build:

   * image/
       * Pathstorm.debug.exe
* Pathstorm.release.exe (yes, these both exist in the same directory)
       * Pathstorm.exe (a final shipping build)
* Various assets of large size such that having multiple copies on the hard drive would just be a waste of space as they are shared by the executables in this directory.

I was able to coax CMake into doing the following:

   SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/image)
   IF (CMAKE_GENERATOR MATCHES "Visual Studio")
       SET_TARGET_PROPERTIES(${TargetName} PROPERTIES PREFIX "../")
SET_TARGET_PROPERTIES(${TargetName} PROPERTIES DEBUG_POSTFIX ".debug") SET_TARGET_PROPERTIES(${TargetName} PROPERTIES RELEASE_POSTFIX ".release")
   ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio")
   IF (CMAKE_GENERATOR MATCHES "Xcode")
#        SET_TARGET_PROPERTIES(${TargetName} PROPERTIES PREFIX "../")
# SET_TARGET_PROPERTIES(${TargetName} PROPERTIES DEBUG_POSTFIX "Debug") # SET_TARGET_PROPERTIES(${TargetName} PROPERTIES RELEASE_POSTFIX "Release")
   ENDIF(CMAKE_GENERATOR MATCHES "Xcode")

Note that I tried to do it with Xcode, too. It only half worked. The debugger would not recognize the executable, and I could never debug my applications. :(

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

Reply via email to