CMakeLists.txt 1.6 KB

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