Чем создавать res-файлы?

Если вы создаете софт под Windows, то наверняка сталкивались с файлами *.res — это бинарный формат ресурсов, который используется тулчейном от Microsoft. Такие файлы прилинковываются с программным кодом для встраивания в экзешник иконок, курсоров, а также информации о версии приложения и авторских правах. Утилита для компиляции ресурсных файлов (RC) входит в состав MSVS, но если вы по тем или иным причинам не хотите ее использовать, то вас ждет, мягко говоря, увлекательное приключение — какого-то стандартного общепринятого способа компилировать ресурсы нет.

Странно, что никто до сих пор не создал универсальный res-компилятор для любых языков — хотя свои компиляторы разной степени удобства включены во многие IDE и тулчейны. Например, в GNU Binutils есть для этого программа windres. Но чтобы ее использовать, вам, естественно, придется целиком установить виндовый порт GCC, например TDM-GCC или Winlibs, а это «могут не только лишь все», да и держать у себя такой громоздкий пакет ради одной утилиты как-то жирно. Я решил найти альтернативу, что-то простое и независимое — и вот вам на выбор два кандидата.

GoRC

http://www.godevtool.com/ResourceFrame.htm

К языку Go никакого отношения не имеет) Это freeware-компилятор res-файлов с синтаксисом, являющимся надмножеством RC от Microsoft. Поддерживает x64. Минимальный исходник для задания иконки приложения выглядит так:

100 ICON "app.ico"

Полученный файл можно включить в DUB-проект:

"sourceFiles-windows": ["resource.res"]

rcedit

https://github.com/electron/rcedit

Утилита от разработчиков Electron. Это не компилятор ресурсов — rcedit работает с экзешниками напрямую и позволяет добавить иконку или манифест уже собранному приложению. Очень удобно, если ваш язык не поддерживает линкинг ресурсов. Или, например, если вы используете какой-то готовый движок или рантайм, который не собираете самостоятельно (как, собственно, тот же Electron). Можно присобачить rcedit к DUB-проекту следующим образом:

"postBuildCommands-windows": [
    "$PACKAGE_DIR\\rcedit \"app.exe\" --set-file-version \"1.0.0.0\" --set-product-version \"1.0.0\" --set-icon \"$PACKAGE_DIR\\icon.ico\""
]

Обновления

bindbc-opencl обновлен до версии 0.1.1.

dlib по итогам марта преодолел рекордную отметку в 14000 скачиваний в месяц! Я уже давно отслеживаю этот показатель и понятия не имею, откуда такой невероятный ажиотаж — обычное количество скачиваний в месяц не превышает 1000. Если у вас есть информация, буду рад узнать.

Сдвинулась с мертвой точки работа над Xtreme3D 4.0 — реализовал многие недостающие фичи, в том числе систему LightFX, функции TextureEx для материалов, а также поддержку FBO. Напомню, что Xtreme3D — это классический 3D-движок для Game Maker, враппер GLScene, разработкой и поддержкой которого я занимаюсь с 2009 года.