diff --git a/cmake/SnoreMacros.cmake b/cmake/SnoreMacros.cmake new file mode 100644 index 0000000..1ea38f4 --- /dev/null +++ b/cmake/SnoreMacros.cmake @@ -0,0 +1,9 @@ +set(_SNORE_TOAST_MACRO_DIR ${CMAKE_CURRENT_LIST_DIR}) + +function(create_icon_rc ICON_PATH RC_NAME) + get_filename_component(ICON_NAME ${ICON_PATH} NAME) + file(TO_NATIVE_PATH ${ICON_PATH} ICON_PATH) + string(REPLACE "\\" "\\\\" ICON_PATH ${ICON_PATH}) + configure_file(${_SNORE_TOAST_MACRO_DIR}/icon.rc.in ${CMAKE_CURRENT_BINARY_DIR}/${ICON_NAME}.rc @ONLY) + set(${RC_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${ICON_NAME}.rc PARENT_SCOPE) +endfunction() diff --git a/cmake/icon.rc.in b/cmake/icon.rc.in new file mode 100644 index 0000000..9dadf81 --- /dev/null +++ b/cmake/icon.rc.in @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "@ICON_PATH@" diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index ac0a25b..e69de29 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,8 +0,0 @@ - -set(ICON_NAME zzz) -file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${ICON_NAME}.ico ICON) -string(REPLACE "\\" "\\\\" ICON ${ICON}) -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${ICON_NAME}.rc "IDI_ICON1 ICON DISCARDABLE \"${ICON}\"\n") -set(SNORE_TOAST_DEPS ${SNORE_TOAST_DEPS} ${CMAKE_CURRENT_BINARY_DIR}/${ICON_NAME}.rc PARENT_SCOPE) - - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0823263..a8f50d4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,45 +1,46 @@ if (BUILD_STATIC_RUNTIME) #link runtime static if(MSVC) foreach(_bt DEBUG RELEASE RELWITHDEBINFO) string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_${_bt} ${CMAKE_CXX_FLAGS_${_bt}}) endforeach(_bt DEBUG RELEASE RELWITHDEBINFO) endif(MSVC) endif() add_library(SnoreToastActions INTERFACE) target_include_directories(SnoreToastActions INTERFACE $ $ ) add_library(SnoreToast::SnoreToastActions ALIAS SnoreToastActions) add_library(libsnoretoast STATIC snoretoasts.cpp toasteventhandler.cpp linkhelper.cpp utils.cpp) target_link_libraries(libsnoretoast PUBLIC runtimeobject shlwapi SnoreToast::SnoreToastActions) target_compile_definitions(libsnoretoast PRIVATE UNICODE _UNICODE __WRL_CLASSIC_COM_STRICT__ WIN32_LEAN_AND_MEAN NOMINMAX) target_compile_definitions(libsnoretoast PRIVATE SNORETOAST_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} SNORETOAST_VERSION_MINOR=${PROJECT_VERSION_MINOR} SNORETOAST_VERSION_PATCH=${PROJECT_VERSION_PATCH} ) target_compile_definitions(libsnoretoast PUBLIC __WRL_CLASSIC_COM_STRICT__) target_include_directories(libsnoretoast PUBLIC $) set_target_properties(libsnoretoast PROPERTIES EXPORT_NAME LibSnoreToast) add_library(SnoreToast::LibSnoreToast ALIAS libsnoretoast) generate_export_header(libsnoretoast) -add_executable(SnoreToast WIN32 main.cpp ${SNORE_TOAST_DEPS}) -target_link_libraries(SnoreToast SnoreToast::LibSnoreToast) +create_icon_rc(${PROJECT_SOURCE_DIR}/data/zzz.ico TOAST_ICON) +add_executable(SnoreToast WIN32 main.cpp ${TOAST_ICON}) +target_link_libraries(SnoreToast PRIVATE SnoreToast::LibSnoreToast) target_compile_definitions(SnoreToast PRIVATE UNICODE _UNICODE WIN32_LEAN_AND_MEAN NOMINMAX) # if there are changes to the callback mechanism we need to change the uuid for the activator SNORETOAST_CALLBACK_UUID target_compile_definitions(SnoreToast PRIVATE SNORETOAST_CALLBACK_UUID="{383803B6-AFDA-4220-BFC3-0DBF810106BF}" ) add_executable(SnoreToast::SnoreToast ALIAS SnoreToast) install(TARGETS SnoreToast SnoreToastActions EXPORT LibSnoreToastConfig RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) install(FILES snoretoastactions.h DESTINATION include/snoretoast) install(EXPORT LibSnoreToastConfig DESTINATION lib/cmake/libsnoretoast NAMESPACE SnoreToast::)