| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- # This file is part of Desktop App Toolkit,
- # a set of libraries for developing nice desktop applications.
- #
- # For license and copyright information please follow this link:
- # https://github.com/desktop-app/legal/blob/master/LEGAL
- target_compile_definitions(common_options
- INTERFACE
- WIN32
- WIN32_LEAN_AND_MEAN
- _WINDOWS
- _SCL_SECURE_NO_WARNINGS
- NOMINMAX
- NOSERVICE
- NOMCX
- NOIME
- NOSOUND
- NOCOMM
- NOKANJI
- NORPC
- NOPROXYSTUB
- NOIMAGE
- NOTAPE
- UNICODE
- _UNICODE
- )
- if (MSVC)
- target_compile_options(common_options
- INTERFACE
- /permissive-
- # /Qspectre
- /utf-8
- /W4
- /MP # Enable multi process build.
- /EHsc # Catch C++ exceptions only, extern C functions never throw a C++ exception.
- /w15038 # wrong initialization order
- /w14265 # class has virtual functions, but destructor is not virtual
- /wd4018 # 'token' : signed/unsigned mismatch
- /wd4100 # 'identifier' : unreferenced formal parameter
- /wd4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data
- /wd4244 # 'argument' : conversion from 'type1' to 'type2', possible loss of data
- /wd4245 # 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch
- /wd4267 # 'var' : conversion from 'size_t' to 'type', possible loss of data
- /wd4305 # 'conversion': truncation from 'type1' to 'type2'
- /wd4324 # 'structname': structure was padded due to alignment specifier
- /wd4389 # 'equality-operator' : signed/unsigned mismatch
- /wd4456 # declaration of 'identifier' hides previous local declaration
- /wd4457 # declaration of 'identifier' hides function parameter
- /wd4458 # declaration of 'identifier' hides class member
- /wd4459 # declaration of 'identifier' hides global declaration
- /wd4611 # interaction between 'function' and C++ object destruction is non-portable
- /wd4702 # unreachable code
- /Zi
- # Taken from Qt 6.
- # https://developercommunity.visualstudio.com/content/problem/139261/msvc-incorrectly-defines-cplusplus.html
- # No support for the flag in upstream CMake as of 3.17.
- # https://gitlab.kitware.com/cmake/cmake/issues/18837
- /Zc:__cplusplus
- )
- target_link_options(common_options
- INTERFACE
- $<IF:$<CONFIG:Debug>,/NODEFAULTLIB:LIBCMT,/DEBUG;/OPT:REF>
- $<$<BOOL:${DESKTOP_APP_NO_PDB}>:/DEBUG:NONE>
- /INCREMENTAL:NO
- )
- if (DESKTOP_APP_ASAN)
- target_compile_options(common_options INTERFACE /fsanitize=address)
- # https://developercommunity.visualstudio.com/t/Linker-error-LNK2038-when-using-Parallel/10512721
- target_compile_definitions(common_options
- INTERFACE
- _DISABLE_VECTOR_ANNOTATION
- _DISABLE_STRING_ANNOTATION
- )
- endif()
- target_compile_options(common_options
- INTERFACE
- /bigobj # scheme.cpp has too many sections.
- )
- if (NOT build_win64 AND NOT build_winarm)
- # target_compile_options(common_options
- # INTERFACE
- # /fp:except # Crash-report fp exceptions in 32 bit build.
- # )
- target_link_options(common_options
- INTERFACE
- /LARGEADDRESSAWARE # Allow more than 2 GB in 32 bit application.
- )
- endif()
- if (DESKTOP_APP_SPECIAL_TARGET)
- target_compile_options(common_options
- INTERFACE
- /WX
- $<IF:$<CONFIG:Debug>,,/GL>
- )
- target_link_options(common_options
- INTERFACE
- $<IF:$<CONFIG:Debug>,,/LTCG>
- $<IF:$<CONFIG:Debug>,,/LTCGOUT:>
- )
- endif()
- else()
- target_compile_definitions(common_options
- INTERFACE
- WINVER=0x0601
- _WIN32_WINNT=0x0601
- )
- target_compile_options(common_options
- INTERFACE
- -fpermissive
- )
- if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
- target_compile_options(common_options
- INTERFACE
- -fms-extensions
- -femulated-tls
- )
- target_link_options(common_options
- INTERFACE
- -fuse-ld=lld
- )
- endif()
- endif()
- target_link_libraries(common_options
- INTERFACE
- winmm
- imm32
- ws2_32
- kernel32
- user32
- gdi32
- winspool
- comdlg32
- advapi32
- shell32
- ole32
- oleaut32
- uuid
- odbc32
- odbccp32
- Shlwapi
- Iphlpapi
- Gdiplus
- Strmiids
- Netapi32
- Userenv
- Version
- Dwmapi
- UxTheme
- Wtsapi32
- Crypt32
- Propsys
- Bcrypt
- )
- if (build_winstore)
- target_compile_definitions(common_options INTERFACE OS_WIN_STORE)
- endif()
|