a mega cool windows xp app
at main 1.8 kB view raw
1cmake_minimum_required(VERSION 3.16) 2project(ShortwaveApp CXX) 3 4# Generate compile_commands.json for editor support 5set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 6 7# Target Windows XP compatibility 8add_definitions(-DWINVER=0x0501) 9add_definitions(-D_WIN32_WINNT=0x0501) 10add_definitions(-D_WIN32_WINNT_WIN2K=0x0500) 11add_definitions(-DMINGW_HAS_SECURE_API=1) 12 13# Disable threading to avoid mcfgthread dependency 14add_compile_options(-fno-threadsafe-statics) 15add_compile_options(-D_GLIBCXX_HAS_GTHREADS=0) 16 17if(MINGW) 18 set(WIN32_ICON shortwave.rc) 19endif() 20 21add_executable(ShortwaveApp WIN32 main.cpp ${WIN32_ICON}) 22 23# Add BASS library from libs directory 24target_include_directories(ShortwaveApp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) 25target_link_libraries(ShortwaveApp user32 gdi32 winmm wininet ${CMAKE_CURRENT_SOURCE_DIR}/libs/bass.lib) 26 27# Include current directory for headers 28target_include_directories(ShortwaveApp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) 29 30# Minimal static linking and avoid threading dependencies 31target_link_options(ShortwaveApp PRIVATE 32 -static-libgcc 33 -static-libstdc++ 34 -static 35 -Wl,--subsystem,windows:5.01 36) 37 38# Configurable output directory 39if(DEFINED OUTPUT_DIR) 40 set_target_properties(ShortwaveApp PROPERTIES 41 RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}" 42 RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}" 43 RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}" 44 ) 45endif() 46 47set_target_properties(ShortwaveApp PROPERTIES 48 OUTPUT_NAME "Shortwave" 49) 50 51# Configurable output directory 52if(DEFINED OUTPUT_DIR) 53 set_target_properties(ShortwaveApp PROPERTIES 54 RUNTIME_OUTPUT_DIRECTORY "${OUTPUT_DIR}" 55 RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}" 56 RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}" 57 ) 58endif()