mklement0 / fileicon

macOS CLI for managing custom icons for files and folders

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Has anyone found a way of using this with CMake's CPack for DragNDrop, TGZ, or productbuild generators on MacOSX? (they seem to reset the icon on the directory)

subatomicglue opened this issue · comments

commented

(apologies for the cmake question, but since image related, perhaps someone here has experienced this)

Has anyone found a way of using this with CMake's CPack for DragNDrop, TGZ, or productbuild generators on MacOSX?

They seem to reset the icon on the directory:

Relevant lines from cmake:

# make
add_library(${PROJECT_NAME} MODULE ${SOURCES} ${RESOURCE_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES  BUNDLE true BUNDLE_EXTENSION "vst")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
      COMMAND fileicon set ${PROJECT_NAME}.vst image.png
      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
      COMMENT "..."
   )

# make install
install(DIRECTORY "${PROJECT_NAME}.vst" DESTINATION "install" COMPONENT vstplugin)
install( SCRIPT "PostInstall.cmake" COMPONENT vstplugin)

# make package
set(CPACK_GENERATOR "DragNDrop;TGZ;productbuild")

Here is PostInstall.cmake, which is required or else make install will strip off the icon from the bundle folder.

execute_process( COMMAND fileicon set install/MyPlugin.vst image.png )

So running make generates MyPlugin.vst directory with the image on it, (the add_custom_command step sets it), looks perfect.

Running make install copies the bundle folder with install( DIRECTORY, stripping the image, so I compensate with the PostInstall.cmake which reruns fileicon script from execute_process.

And then the CPack packager generates the .dmg, the .pkg, and the .tgz, which strips the folder image again from all...

Any ideas why CMake is stripping the image? (and how to get it to not do that)

I'm not familiar CMake, but it sounds that it at least by default it ignores HFS (the macOS filesystem's) extended attributes, in which the icon information is stored.

However, there may be ways to opt in: https://cmake.org/cmake/help/v3.0/module/CPackDMG.html

If you can confirm that there is a way to make this work, we can add a summary to the Wiki for this repo.

commented

Tracking same topic over at cmake's issue tracker as well:
https://gitlab.kitware.com/cmake/cmake/issues/17847