Advertisement
Guest User

Untitled

a guest
May 16th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 6.01 KB | None | 0 0
  1. set(PROJECT_NAME win32core)
  2. project(${PROJECT_NAME} CXX)
  3.  
  4. ############ Header Files #############
  5. set(HEADERS_FILES
  6.     resource.h
  7.     stdafx.h
  8.     ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/bitset.h
  9.     ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/blobsdict.h
  10.     ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/tomlfile.h
  11. )
  12. source_group("Headers" FILES ${HEADERS_FILES})
  13.  
  14. MACRO(ADD_PRECOMPILED_HEADER PrecompiledHeader PrecompiledSource SourcesVar)
  15.     if(MSVC)
  16.         set(PrecompiledBinary "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pch")
  17.         SET_SOURCE_FILES_PROPERTIES(${PrecompiledSource}
  18.                                     PROPERTIES COMPILE_FLAGS "/Yc\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\""
  19.                                                OBJECT_OUTPUTS "${PrecompiledBinary}")
  20.         SET_SOURCE_FILES_PROPERTIES(${${SourcesVar}}
  21.                                     PROPERTIES COMPILE_FLAGS "/Yu\"${PrecompiledHeader}\" /FI\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\""
  22.                                                OBJECT_DEPENDS "${PrecompiledBinary}")
  23.     endif()
  24.     LIST(INSERT ${SourcesVar} 0 ${PrecompiledSource})
  25. ENDMACRO(ADD_PRECOMPILED_HEADER)
  26.  
  27. ############ Source Files #############
  28. set(SRC_FILES
  29.     win32core.cpp
  30.     ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/bitset.cpp
  31.     ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/blobsdict.cpp
  32.     ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/packager.cpp
  33.     ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/packreader.cpp
  34. )
  35. source_group("Sources" FILES ${SRC_FILES})
  36.  
  37. # Warning: pch and target are the same for every configuration
  38. ADD_PRECOMPILED_HEADER("stdafx.h" "stdafx.cpp" SRC_FILES)
  39.  
  40. add_executable(${PROJECT_NAME}  ${SRC_FILES} ${HEADERS_FILES})
  41.  
  42. if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
  43.     string(CONCAT OUT_DIR
  44.         $<$<CONFIG:Release>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x86/bin/>
  45.           $<$<CONFIG:Debug>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x86d/bin/>
  46.         $<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:Debug>>>:${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>>
  47.     )
  48. elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
  49.     string(CONCAT OUT_DIR
  50.           $<$<CONFIG:Debug>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x64d/bin/>
  51.         $<$<CONFIG:Release>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x64/bin/>
  52.         $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>>
  53.     )
  54. else()
  55.     message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
  56. endif()
  57. set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${OUT_DIR})
  58.  
  59. if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
  60.     string(CONCAT TARGET_NAME
  61.         $<$<CONFIG:Release>:${PROJECT_NAME}>
  62.           $<$<CONFIG:Debug>:${PROJECT_NAME}>
  63.         $<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:Debug>>>:${PROJECT_NAME}>
  64.     )
  65. elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
  66.     string(CONCAT TARGET_NAME
  67.           $<$<CONFIG:Debug>:${PROJECT_NAME}>
  68.         $<$<CONFIG:Release>:${PROJECT_NAME}>
  69.         $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${PROJECT_NAME}>
  70.     )
  71. else()
  72.     message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
  73. endif()
  74. set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${TARGET_NAME})
  75.  
  76. if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
  77.     target_compile_definitions(${PROJECT_NAME} PRIVATE
  78.         $<$<CONFIG:Release>:_CRT_SECURE_NO_WARNINGS;NDEBUG;_WINDOWS;UNICODE;_UNICODE>
  79.           $<$<CONFIG:Debug>:_CRT_SECURE_NO_WARNINGS;_DEBUG;_WINDOWS;UNICODE;_UNICODE>
  80.     )
  81. elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
  82.     target_compile_definitions(${PROJECT_NAME} PRIVATE
  83.           $<$<CONFIG:Debug>:_CRT_SECURE_NO_WARNINGS;_DEBUG;_WINDOWS;UNICODE;_UNICODE>
  84.         $<$<CONFIG:Release>:_CRT_SECURE_NO_WARNINGS;NDEBUG;_WINDOWS;UNICODE;_UNICODE>
  85.     )
  86. else()
  87.     message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
  88. endif()
  89.  
  90. if(MSVC)
  91.     if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
  92.         target_compile_options(${PROJECT_NAME} PRIVATE
  93.             $<$<CONFIG:Release>:/GL;/O2;/Oi;/MD;/Gy;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
  94.               $<$<CONFIG:Debug>:/Od;/MDd;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
  95.         )
  96.     elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
  97.         target_compile_options(${PROJECT_NAME} PRIVATE
  98.               $<$<CONFIG:Debug>:/Od;/MDd;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
  99.             $<$<CONFIG:Release>:/GL;/O2;/Oi;/MD;/Gy;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
  100.         )
  101.     else()
  102.         message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
  103.     endif()
  104.     if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
  105.         set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/LTCG /DEBUG /INCREMENTAL:NO")
  106.         set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/DEBUG /INCREMENTAL")
  107.     elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
  108.         set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/DEBUG /INCREMENTAL")
  109.         set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/LTCG /DEBUG /INCREMENTAL:NO")
  110.     else()
  111.          message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
  112.     endif()
  113. endif()
  114.  
  115. ################### Dependencies ##################
  116. # Add Dependencies to project.                    #
  117. ###################################################
  118.  
  119. add_dependencies(${PROJECT_NAME} g3log lemon zlib core graphs)
  120.  
  121. # Link with other targets.
  122. target_link_libraries(${PROJECT_NAME} g3logger lemon zlib core graphs)
  123. # Link with other additional libraries.
  124. target_link_libraries(${PROJECT_NAME} DbgHelp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement