CMakeLists.txt 1021 B

1234567891011121314151617181920212223242526272829303132
  1. cmake_minimum_required(VERSION 3.8)
  2. project(CheckIPOSupported-CUDA LANGUAGES CUDA)
  3. cmake_policy(SET CMP0069 NEW)
  4. include(CheckIPOSupported)
  5. check_ipo_supported(RESULT ipo_supported OUTPUT ipo_output)
  6. if(ipo_supported)
  7. set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
  8. endif()
  9. if(NOT ipo_supported AND CMAKE_CUDA_COMPILER_ID STREQUAL "NVIDIA"
  10. AND CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11.2)
  11. message(FATAL_ERROR "CheckIPOSupported failed to correctly identify NVIDIA CUDA IPO support")
  12. endif()
  13. set(CMAKE_CUDA_SEPARABLE_COMPILATION ON)
  14. add_library(foo STATIC foo.cu)
  15. set_target_properties(foo PROPERTIES
  16. WINDOWS_EXPORT_ALL_SYMBOLS ON
  17. POSITION_INDEPENDENT_CODE ON)
  18. add_library(bar SHARED bar.cu)
  19. set_target_properties(bar PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
  20. target_link_libraries(bar PRIVATE foo)
  21. add_executable(CheckIPOSupported-CUDA main.cu)
  22. target_link_libraries(CheckIPOSupported-CUDA PUBLIC bar)
  23. enable_testing()
  24. add_test(NAME CheckIPOSupported-CUDA COMMAND CheckIPOSupported-CUDA)