CMakeLists.txt 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. cmake_minimum_required (VERSION 2.6)
  2. PROJECT (ExternalOBJ)
  3. IF(APPLE)
  4. # set _CMAKE_OSX_MACHINE to umame -m
  5. EXEC_PROGRAM(uname ARGS -m OUTPUT_VARIABLE _CMAKE_OSX_MACHINE)
  6. # check for Power PC and change to ppc
  7. IF("${_CMAKE_OSX_MACHINE}" MATCHES "Power")
  8. SET(_CMAKE_OSX_MACHINE ppc)
  9. ENDIF("${_CMAKE_OSX_MACHINE}" MATCHES "Power")
  10. SET(CMAKE_OSX_ARCHITECTURES ${_CMAKE_OSX_MACHINE})
  11. ENDIF(APPLE)
  12. # Build the external object file.
  13. TRY_COMPILE(EXTERNAL_OBJECT_BUILT
  14. ${ExternalOBJ_BINARY_DIR}/Object
  15. ${ExternalOBJ_SOURCE_DIR}/Object
  16. Object
  17. external
  18. OUTPUT_VARIABLE OUTPUT
  19. )
  20. IF(EXTERNAL_OBJECT_BUILT)
  21. MESSAGE(
  22. "Building external_object.cxx succeeded with the following output:\n"
  23. "[${OUTPUT}]"
  24. )
  25. ELSE(EXTERNAL_OBJECT_BUILT)
  26. MESSAGE(FATAL_ERROR
  27. "Building external_object.cxx failed with the following output:\n"
  28. "[${OUTPUT}]"
  29. )
  30. ENDIF(EXTERNAL_OBJECT_BUILT)
  31. # Find the external object file.
  32. SET(DIR ${ExternalOBJ_BINARY_DIR}/Object)
  33. FILE(GLOB_RECURSE EXTERNAL_OBJECT
  34. "${DIR}/external_object*${CMAKE_CXX_OUTPUT_EXTENSION}")
  35. IF(EXTERNAL_OBJECT)
  36. LIST (GET EXTERNAL_OBJECT 0 EXTERNAL_OBJECT)
  37. MESSAGE("Found \"${EXTERNAL_OBJECT}\".")
  38. ELSE(EXTERNAL_OBJECT)
  39. MESSAGE(FATAL_ERROR "Could not find external object.")
  40. ENDIF(EXTERNAL_OBJECT)
  41. # Test creation of external objects by custom commands.
  42. SET(CUSTOM_OBJECT
  43. ${CMAKE_CURRENT_BINARY_DIR}/custom_object${CMAKE_C_OUTPUT_EXTENSION})
  44. ADD_CUSTOM_COMMAND(
  45. OUTPUT ${CUSTOM_OBJECT}
  46. COMMAND ${CMAKE_COMMAND} -E copy ${EXTERNAL_OBJECT} ${CUSTOM_OBJECT}
  47. DEPENDS ${EXTERNAL_OBJECT}
  48. )
  49. # Build an executable using the external object file.
  50. ADD_EXECUTABLE(ExternalOBJ executable.cxx ${CUSTOM_OBJECT})