Теоретически, очень легко создать приложение Win32 с файлом ресурсов, используя cmake.В команде add_executable
файл ресурса может быть указан так же легко, как исходный файл C или 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)?