Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Подсказки / Доступ к параметрам VC++ проекта из кода

Доступ к параметрам VC++ проекта из кода

Автор:

Иногда нужно в С/С++ коде получить некоторые параметры из VC++ проекта, например его название. Очень полезно на случай всяких переименований в проекте.

Это можно сделать так:

Добавить в

Configuration Properties | C/C++ | Preprocessor | Preprocessor Definitions

например такие определения:

PROJECT_NAME=L\"$(ProjectName)\"
PROJECT_TARGET_FILENAME=L\"$(TargetFileName)\"

(тут я использую юникод)

И в коде соответсвенно можно обращаться:

wchar_t * GetProjectName()
{
  return PROJECT_NAME;
}

Также эти определения можно задать в
Configuration Properties | Resources | General | Preprocessor Definitions

И тогда можно использовать эти данные в ресурсных файлах .rc и .rc2
Например:

VS_VERSION_INFO VERSIONINFO
 FILEVERSION VERSION_FILE
 PRODUCTVERSION VERSION_PRODUCT
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS VS_FF_DEBUG
#else
 FILEFLAGS 0x0L
#endif
 FILEOS VOS__WINDOWS32
 FILETYPE VFT_DLL
 FILESUBTYPE VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "000904b0"
        BEGIN
            VALUE "InternalName",    PROJECT_NAME
            VALUE "OriginalFilename",    PROJECT_TARGET_FILENAME
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x9, 1200
    END
END

25 января 2011

#Visual Studio

Комментарии:
АлмазПостоялецwww29 янв. 201122:16#1
Спасибо, весьма полезно.
ArtemПостоялецwww2 ноя. 201123:22#2
Такие же штуки можно использовать, если загружать солюшен из bat файла.

Пишем в батнике

* * * *

set MY_SUPER_VAR=c:\super_path
my_solution.sln

* * * *

Ну и в preprocessor defenitions вставляем аналогичную строчку
MY_SUPER_VAR_DEFENITION=L\"$(MY_SUPER_VAR)\"

Удобно тем, что данная переменная будет работать только, когда солюшен запущен через батник. Либо можно использовать несколько батников с разными значениями.

kvakvsПостоялецwww3 ноя. 20110:30#3
Использовать CMake для генерации проекта, собирать как обычно из вижуалстудии.
Закинуть в ресурсы файл CMakeCache.txt из папки сборки - он содержит все обработанные макросы и настройки в виде текста.
Прочитать текст разобрать на имена полей и значения.

Пусть решение не такое простое, как генерация заголовков, но зато можно получить все-все настройки, пути к файлам, и т.д..

NickGastovskiПостоялецwww23 фев. 201213:27#4
хм,а директорию поиска инклудов\либ добавить никак нельзя?
т.е у меня проект был обновлен из mvs2005 на 10,но в 8студии у меня в параметрах среды стояли около 10 директорий с инклудами(физикс,дхсдк и т.д),а как известно в 2010 эту замечательную функцию убрали.. Прописывать эти директории для каждого проекта муторно(их около 15),есть ли вариант добавить через препроцессор эти директории?
Barbar1anПостоялецwww23 фев. 201213:42#5
а мне кажется правильно что убрали инклуды в студии, я даже в 6-й студии не любил их потому что это проект-специфичные настройки и лежать должны в проекте.

да и делать это часто не нада, раз настроил на проект и всё, или кто-то создает проекты по 10 в день?

NickGastovskiПостоялецwww23 фев. 201213:50#6
представь,но порой это так и происходит
Например,когда тестируешь определенную фичу перед интеграцией

Вот,что то нашел
http://social.msdn.microsoft.com/Forums/nl-BE/vcgeneral/thread/a4… -6f644a679862

d3dx9_37Удалёнwww28 фев. 201418:37#7
Property sheet же, посоны. Чел выше правильную ссылку нашел.
KatekovAntonПостоялецwww1 мар. 20141:14#8
какойто де-факто неправильный подход... но интересно

/ Форум / Программирование игр / Общее

Тема в архиве.

2001—2017 © GameDev.ru — Разработка игр