Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- set(PROJECT_NAME win32core)
- project(${PROJECT_NAME} CXX)
- ############ Header Files #############
- set(HEADERS_FILES
- resource.h
- stdafx.h
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/bitset.h
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/blobsdict.h
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/tomlfile.h
- )
- source_group("Headers" FILES ${HEADERS_FILES})
- MACRO(ADD_PRECOMPILED_HEADER PrecompiledHeader PrecompiledSource SourcesVar)
- if(MSVC)
- set(PrecompiledBinary "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pch")
- SET_SOURCE_FILES_PROPERTIES(${PrecompiledSource}
- PROPERTIES COMPILE_FLAGS "/Yc\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\""
- OBJECT_OUTPUTS "${PrecompiledBinary}")
- SET_SOURCE_FILES_PROPERTIES(${${SourcesVar}}
- PROPERTIES COMPILE_FLAGS "/Yu\"${PrecompiledHeader}\" /FI\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\""
- OBJECT_DEPENDS "${PrecompiledBinary}")
- endif()
- LIST(INSERT ${SourcesVar} 0 ${PrecompiledSource})
- ENDMACRO(ADD_PRECOMPILED_HEADER)
- ############ Source Files #############
- set(SRC_FILES
- win32core.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/bitset.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/blobsdict.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/packager.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../core/extra/src/packreader.cpp
- )
- source_group("Sources" FILES ${SRC_FILES})
- # Warning: pch and target are the same for every configuration
- ADD_PRECOMPILED_HEADER("stdafx.h" "stdafx.cpp" SRC_FILES)
- add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEADERS_FILES})
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- string(CONCAT OUT_DIR
- $<$<CONFIG:Release>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x86/bin/>
- $<$<CONFIG:Debug>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x86d/bin/>
- $<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:Debug>>>:${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>>
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- string(CONCAT OUT_DIR
- $<$<CONFIG:Debug>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x64d/bin/>
- $<$<CONFIG:Release>:${CMAKE_CURRENT_SOURCE_DIR}../../../../../../build/vc2017_x64/bin/>
- $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/$<CONFIG>>
- )
- else()
- message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
- endif()
- set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${OUT_DIR})
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- string(CONCAT TARGET_NAME
- $<$<CONFIG:Release>:${PROJECT_NAME}>
- $<$<CONFIG:Debug>:${PROJECT_NAME}>
- $<$<NOT:$<OR:$<CONFIG:Release>,$<CONFIG:Debug>>>:${PROJECT_NAME}>
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- string(CONCAT TARGET_NAME
- $<$<CONFIG:Debug>:${PROJECT_NAME}>
- $<$<CONFIG:Release>:${PROJECT_NAME}>
- $<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${PROJECT_NAME}>
- )
- else()
- message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
- endif()
- set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${TARGET_NAME})
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- target_compile_definitions(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Release>:_CRT_SECURE_NO_WARNINGS;NDEBUG;_WINDOWS;UNICODE;_UNICODE>
- $<$<CONFIG:Debug>:_CRT_SECURE_NO_WARNINGS;_DEBUG;_WINDOWS;UNICODE;_UNICODE>
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- target_compile_definitions(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Debug>:_CRT_SECURE_NO_WARNINGS;_DEBUG;_WINDOWS;UNICODE;_UNICODE>
- $<$<CONFIG:Release>:_CRT_SECURE_NO_WARNINGS;NDEBUG;_WINDOWS;UNICODE;_UNICODE>
- )
- else()
- message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
- endif()
- if(MSVC)
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- target_compile_options(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Release>:/GL;/O2;/Oi;/MD;/Gy;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
- $<$<CONFIG:Debug>:/Od;/MDd;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
- )
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- target_compile_options(${PROJECT_NAME} PRIVATE
- $<$<CONFIG:Debug>:/Od;/MDd;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
- $<$<CONFIG:Release>:/GL;/O2;/Oi;/MD;/Gy;/W3;/fp:precise;/EHsc;/GS;/diagnostics:classic;/Zc:wchar_t;/Zc:forScope;/Zc:inline>
- )
- else()
- message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
- endif()
- if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
- set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/LTCG /DEBUG /INCREMENTAL:NO")
- set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/DEBUG /INCREMENTAL")
- elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
- set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_DEBUG "/DEBUG /INCREMENTAL")
- set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "/LTCG /DEBUG /INCREMENTAL:NO")
- else()
- message(WARNING "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
- endif()
- endif()
- ################### Dependencies ##################
- # Add Dependencies to project. #
- ###################################################
- add_dependencies(${PROJECT_NAME} g3log lemon zlib core graphs)
- # Link with other targets.
- target_link_libraries(${PROJECT_NAME} g3logger lemon zlib core graphs)
- # Link with other additional libraries.
- target_link_libraries(${PROJECT_NAME} DbgHelp)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement