В теории очень легко построить приложение Win32 с файлом ресурсов с помощью cmake. В команде add_executable
файл ресурсов может быть указан так же легко, как исходный файл C или С++. Однако существует известная ошибка при создании с использованием инструментов MinGW.
Я нашел обходное решение, которое должно включать следующее в CMakeFiles.txt...
if(MINGW)
set(CMAKE_RC_COMPILER_INIT windres)
ENABLE_LANGUAGE(RC)
SET(CMAKE_RC_COMPILE_OBJECT
"<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>")
endif(MINGW)
К сожалению, это не работает. Похоже, что windres
создает файл <whatever>.rc.res
, который ld
не понимает.
В моих поисках у меня появилось сильное подозрение, что поддержка Win32 рассматривается как очень низкий приоритет, особенно вне Visual Studio. Это понятно, так как Win32, очевидно, не так важен, как когда-то. И, конечно, Visual Studio Express Edition легко доступны бесплатно.
Несмотря на это, мне было бы удобно, если бы я мог использовать MinGW GCC для нескольких старых приложений Win32, которые я по-прежнему использую. Если ничего другого, я могу получить статистику покрытия GCOV.
Очевидно, что если все остальное не удается, я всегда могу обрабатывать файлы ресурсов, используя команду пользовательской сборки. Одна из проблем заключается в том, что я не знаком ни с windres, ни с ld, или с тем, как MinGW предназначен для обработки файлов ресурсов Win32. Другое дело, что я действительно не хочу изобретать велосипед, если у кого-то уже есть превосходное колесо, которое они хотели бы разделить со мной.
Итак, в основном это - как я могу поддерживать создание приложений Win32 с файлами ресурсов с помощью cmake и использование MinGW (но не нарушая поддержку Visual Studio)?