export-NOWARN.cmake 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. enable_language(CXX)
  2. add_library(foo empty.cpp)
  3. set_property(TARGET foo APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<0:>/include/subdir)
  4. set_property(TARGET foo APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<INSTALL_PREFIX>/include/subdir)
  5. set_property(TARGET foo APPEND PROPERTY INTERFACE_SOURCES $<0:>/include/subdir/empty.cpp)
  6. set_property(TARGET foo APPEND PROPERTY INTERFACE_SOURCES $<INSTALL_PREFIX>/include/subdir/empty.cpp)
  7. set_property(TARGET foo APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/subdir>)
  8. set_property(TARGET foo APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<INSTALL_INTERFACE:include/subdir>)
  9. set_property(TARGET foo APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<INSTALL_INTERFACE:include/$<0:>>)
  10. set_property(TARGET foo APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<INSTALL_INTERFACE:$<0:>/include>)
  11. set_property(TARGET foo APPEND PROPERTY INTERFACE_SOURCES $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/subdir/empty.cpp>)
  12. set_property(TARGET foo APPEND PROPERTY INTERFACE_SOURCES $<INSTALL_INTERFACE:include/subdir/empty.cpp>)
  13. set_property(TARGET foo APPEND PROPERTY INTERFACE_SOURCES $<INSTALL_INTERFACE:include/subdir/empty.cpp$<0:>>)
  14. set_property(TARGET foo APPEND PROPERTY INTERFACE_SOURCES $<INSTALL_INTERFACE:$<0:>/include/subdir/empty.cpp>)
  15. # target_include_directories(foo INTERFACE include/subdir) # Does and should warn. INSTALL_INTERFACE must not list src dir paths.
  16. target_include_directories(foo INTERFACE $<0:>/include/subdir) # Does not and should not should warn, because it starts with a genex.
  17. target_include_directories(foo INTERFACE $<INSTALL_PREFIX>/include/subdir)
  18. target_sources(foo INTERFACE $<0:>/include/subdir/empty.cpp)
  19. target_sources(foo INTERFACE $<INSTALL_PREFIX>/include/subdir/empty.cpp)
  20. target_include_directories(foo INTERFACE $<INSTALL_INTERFACE:include/subdir>)
  21. target_include_directories(foo INTERFACE $<INSTALL_INTERFACE:include/$<0:>>)
  22. target_sources(foo INTERFACE $<INSTALL_INTERFACE:include/subdir/empty.cpp>)
  23. target_sources(foo INTERFACE $<INSTALL_INTERFACE:include/subdir/empty.cpp$<0:>>)
  24. install(FILES include/subdir/empty.cpp
  25. DESTINATION include/subdir
  26. )
  27. install(TARGETS foo EXPORT FooTargets DESTINATION lib)
  28. install(EXPORT FooTargets DESTINATION lib/cmake)
  29. install(TARGETS foo EXPORT FooTargets2
  30. DESTINATION lib
  31. INCLUDES DESTINATION include # No warning. Implicit install prefix.
  32. )
  33. install(EXPORT FooTargets2 DESTINATION lib/cmake)
  34. install(TARGETS foo EXPORT FooTargets3
  35. DESTINATION lib
  36. INCLUDES DESTINATION $<INSTALL_PREFIX>include
  37. )
  38. install(EXPORT FooTargets3 DESTINATION lib/cmake)
  39. install(TARGETS foo EXPORT FooTargets4
  40. DESTINATION lib
  41. INCLUDES DESTINATION $<INSTALL_INTERFACE:include>
  42. )
  43. install(EXPORT FooTargets4 DESTINATION lib/cmake)
  44. install(TARGETS foo EXPORT FooTargets5
  45. DESTINATION lib
  46. # The $<0:> is evaluated at export time, leaving 'include' behind, which should be treated as above.
  47. INCLUDES DESTINATION $<INSTALL_INTERFACE:$<0:>include>
  48. )
  49. install(EXPORT FooTargets5 DESTINATION lib/cmake)
  50. install(TARGETS foo EXPORT FooTargets6
  51. DESTINATION lib
  52. INCLUDES DESTINATION $<INSTALL_INTERFACE:include$<0:>>
  53. )
  54. install(EXPORT FooTargets6 DESTINATION lib/cmake)
  55. install(TARGETS foo EXPORT FooTargets7
  56. DESTINATION lib
  57. INCLUDES DESTINATION include$<0:>
  58. )
  59. install(EXPORT FooTargets7 DESTINATION lib/cmake)
  60. install(TARGETS foo EXPORT FooTargets8
  61. DESTINATION lib
  62. INCLUDES DESTINATION $<0:>include
  63. )
  64. install(EXPORT FooTargets8 DESTINATION lib/cmake)