Russian Qt Forum

Компиляторы и платформы => Visual C++ => Тема начата: igor_bogomolov от Январь 05, 2011, 14:43



Название: cmake + msvc + rc
Отправлено: igor_bogomolov от Январь 05, 2011, 14:43
Имею microsoft visual c++ 2010 express. Эта версия имеет некоторые ограничения в работе с ресурсами (например нельзя отредактировать rc файл из под IDE, пункта для создания rc файла так же не нашёл).  Но сам компилятор ресурсов присутствует.
У меня такой вопрос, возможно ли имея express версию студии добавить ресурсы к dll и если возможно, то что я тогда делаю не так?
А пытаюсь я это сделать следующим способом
1. Создал файл ресурсов
Код
C++ (Qt)
#include "..\resource.h"
 
#define APSTUDIO_READONLY_SYMBOLS
 
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
 
/////////////////////////////////////////////////////////////////////////////
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 100
PRODUCTVERSION 1, 0, 0, 1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x9L
#else
FILEFLAGS 0x8L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
   BLOCK "StringFileInfo"
   BEGIN
       BLOCK "040904b0"
       BEGIN
           VALUE "Comments", "Comments"
           VALUE "CompanyName", "MyCompany"
           VALUE "FileDescription", "FileDescription"
           VALUE "FileVersion", "1, 0, 0, 100"
           VALUE "InternalName", "InternalName"
           VALUE "LegalCopyright", "Copyright (C) 2010"
           VALUE "OriginalFilename", "npapi_plugin.dll"
           VALUE "PrivateBuild", "RCVERSION-20030212_100"
           VALUE "ProductName", "ProductName"
           VALUE "ProductVersion", "1, 0, 0, 1"
       END
   END
   BLOCK "VarFileInfo"
   BEGIN
       VALUE "Translation", 0x409, 1200
   END
END
 
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
 
1 TEXTINCLUDE  
BEGIN
   "resource.h\0"
   "\0"
END
 
2 TEXTINCLUDE  
BEGIN
   "#include ""afxres.h""\r\n"
   "\0"
END
 
3 TEXTINCLUDE  
BEGIN
   "\0"
END
 
#endif    // APSTUDIO_INVOKED
 
/////////////////////////////////////////////////////////////////////////////
 
 
 
#ifndef APSTUDIO_INVOKED
 
 
/////////////////////////////////////////////////////////////////////////////
#endif    // не APSTUDIO_INVOKED


2. Добавил правило для сборки в cmake

Код
Bash
   list(APPEND RCFILE  ${PROJECT_SOURCE_DIR}/win_resources.rc)
   add_library(${PROJECT} SHARED ${SOURCES}
                                 ${DEFFILE}
                                 ${RCFILE}

3. Компилирую

Dll компилируется, ресурсы тоже, но реально в dll никакой информации не добавляется.
Почему?


Название: Re: cmake + msvc + rc
Отправлено: igor_bogomolov от Январь 05, 2011, 18:27
Такая вот новая информация. Если я генерирую файл проекта для студии
Код
Bash
cmake -G "Visual Studio 10" ..
открываю проект и компилирую уже с студии, то все отрабатывает правильно. Ресурсы добавляются.

Если я делаю так
Код
Bash
cmake -G "NMake Makefiles" ..
и компилирую в консоли (этот вариант мне больше подходит), ресурсы к dll не добавляются.
Чего может не хватать?


Название: Re: cmake + msvc + rc
Отправлено: inst от Март 18, 2011, 01:32
Возможно проблема связана с этим багом (http://www.cmake.org/Bug/view.php?id=4068)?