CMakeLists.txt 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. macro(ctkMacroInitProject test)
  2. # Extract current directory name to use as project name
  3. #file(GLOB CUR_FILE "CMakeLists.txt")
  4. #get_filename_component(CUR_ABSOLUTE_DIR ${CUR_FILE} PATH)
  5. #get_filename_component(DIR_NAME ${CUR_ABSOLUTE_DIR} NAME)
  6. #project(${DIR_NAME})
  7. file(GLOB include_file_list "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
  8. file(GLOB implementation_file_list "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
  9. file(GLOB templete_file_list1 "${CMAKE_CURRENT_SOURCE_DIR}/*.txx")
  10. file(GLOB templete_file_list2 "${CMAKE_CURRENT_SOURCE_DIR}/*.tpp")
  11. file(GLOB resource_file_list "${CMAKE_CURRENT_SOURCE_DIR}/*.qrc")
  12. file(GLOB ui_file_list "${CMAKE_CURRENT_SOURCE_DIR}/*.ui")
  13. # Set your list of sources here.
  14. set(PROJECT_SRCS
  15. ${implementation_file_list}
  16. ${include_file_list}
  17. ${templete_file_list1}
  18. ${templete_file_list2}
  19. ${ui_file_list}
  20. ${resource_file_list}
  21. )
  22. ## Add the project binary dir as include dir for the .moc files.
  23. include_directories("${CMAKE_CURRENT_BINARY_DIR}")
  24. set(MY_MOC_CXX )
  25. if(${test})
  26. ## Moc the tests:
  27. foreach(FILE_NAME_ABS ${implementation_file_list})
  28. ## extract the base file name.
  29. get_filename_component(FILE_NAME ${FILE_NAME_ABS} NAME_WE)
  30. ## Exclude the main.cpp file (it doesn't ned to be 'mocced')
  31. if(NOT ${FILE_NAME} STREQUAL "main")
  32. ## Assign the moc custom filename
  33. set(MOC_FILE "${FILE_NAME}.moc")
  34. if (CTK_QT_VERSION VERSION_GREATER "4")
  35. QT5_GENERATE_MOC(${FILE_NAME_ABS} ${MOC_FILE})
  36. else()
  37. QT4_GENERATE_MOC(${FILE_NAME_ABS} ${MOC_FILE})
  38. endif()
  39. list(APPEND MY_MOC_CXX "${CMAKE_CURRENT_BINARY_DIR}/${MOC_FILE}")
  40. endif()
  41. endforeach()
  42. else()
  43. ## Moc the library's .h files
  44. if (CTK_QT_VERSION VERSION_GREATER "4")
  45. QT5_WRAP_CPP(MY_MOC_CXX ${include_file_list})
  46. QT5_WRAP_UI(MY_UI_CXX ${ui_file_list})
  47. #QT5_ADD_RESOURCES(MY_RESOURCE_CXX ${resource_file_list})
  48. else()
  49. QT4_WRAP_CPP(MY_MOC_CXX ${include_file_list})
  50. QT4_WRAP_UI(MY_UI_CXX ${ui_file_list})
  51. #QT4_ADD_RESOURCES(MY_RESOURCE_CXX ${resource_file_list})
  52. endif()
  53. endif()
  54. set(PROJECT_SRCS
  55. ${PROJECT_SRCS}
  56. ${MY_MOC_CXX}
  57. ${MY_UI_CXX}
  58. ${resource_file_list}
  59. )
  60. # List libraries that are needed by this project.
  61. ctkFunctionGetTargetLibraries(dependency_libraries)
  62. set(PROJECT_LIBS ${dependency_libraries})
  63. endmacro()
  64. set(test_executable ${PROJECT_NAME}CppTests)
  65. ctkMacroInitproject(1)
  66. add_executable(${test_executable} ${PROJECT_SRCS})
  67. target_link_libraries(${test_executable} ${PROJECT_LIBS})
  68. add_test(${PROJECT_NAME}Tests ${CPP_TEST_PATH}/${test_executable})
  69. #link_libraries(${PROJECT_LIBS})