Внешние параметры для компиляции проекта VS2008 C ++ - PullRequest
1 голос
/ 25 января 2010

Есть ли какой-нибудь способ экстернализировать пути к библиотекам, которые используются в процессе компиляции в Visual Studio 2008? Как, * .properties файлы?

Моя цель - определить «переменные», ссылающиеся на местоположения файлов и библиотек заголовков, например, файлы * .properties используются в системе сборки Ant для Java.

Ответы [ 5 ]

3 голосов
/ 25 января 2010

Я думаю, вы ищете .vsprops файлов. Они сопоставимы с файлами * .properties.

2 голосов
/ 25 января 2010

Переменные среды?

Все $ (xyz) замены, разрешенные в свойствах, есть, и вам разрешено "принести свои".

Обычно они наследуются от родительского процесса, поэтому вы можете установить их

  • для машины / пользователя в настройках системы (обычно наследуется через проводник)
  • в пакетном файле, который устанавливает их перед запуском devenv.exe
  • в надстройке, такой как SolutionBuildEnvironment , чтобы прочитать их из файла проекта
1 голос
/ 25 января 2010

Я не знаю, как работает Ant, но для ваших статических библиотек и заголовков вы можете отредактировать файл .vcproj. На самом деле это файлы XML. Библиотеки идут в теге инструмента VCLinkerTool , в Дополнительные зависимости

<Tool
    Name="VCLinkerTool"
    AdditionalOptions=" /subsystem:windowsce,5.01"
    AdditionalDependencies="iphlpapi.lib commctrl.lib coredll.lib"
/>

Дополнительные пути к заголовкам определены в теге инструмента VCCLCompilerTool , в AdditionalIncludeDirectories

<Tool
    Name="VCCLCompilerTool"
    Optimization="0"
    AdditionalIncludeDirectories="dev\mydir"
    PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
/>

Будьте осторожны, для каждой конфигурации сборки есть один такой раздел. Это то, что вы ищете?

Edit: .vsprops, предложенный MSalters, является более мощным; Вы можете определить дополнительные зависимости и библиотеки в них, чтобы ваши проекты наследовали эти свойства. Что ж, сегодня я узнал что-то полезное!

1 голос
/ 25 января 2010

Если вы имеете в виду влияние на местоположение #include, то свойства проекта | Свойства конфигурации | C / C ++ / Дополнительные каталоги включения - это тикет. Также есть свойства проекта | Общие свойства | Дополнительные пути поиска ссылок.

Если ваш вопрос состоит в том, как я могу параметризовать материал в файле VCProj, как я бы сделал это в Ant, ответ таков: в VS2010 проекты VC [/ can?] Основаны на MSBuild, тогда как файлы VS2008 vcproj представляют собой собственный формат на основе XML [но, как говорят другие ответы, они обладают аналогичными свойствами].

В отсутствие дополнительной информации я вполне уверен, что стандартный подход к тому, что вы делаете, заключается в добавлении путей поиска в первом или втором абзаце.

0 голосов
/ 25 января 2010

Вы можете использовать систему сборки, такую ​​как CMake .Вы даете CMake высокоуровневое описание вашего проекта, и он выплевывает необходимые файлы для правильной сборки проекта с помощью другого инструмента (например, IDE Visual Studio или make-файла в стиле Unix).

Пути: Вы можете использовать команды CMake INCLUDE_DIRECTORIES() и LINK_DIRECTORIES() в файле конфигурации CMakeList.txt, чтобы указать эти пути.CMake имеет переменных , которые описывают оба аспекта вашей среды (многие из которых могут быть автоматически обнаружены, например, CMAKE_C_COMPILER, которая является командой для запуска вашего компилятора C), а также любые параметры, которые вы хотите разрешить пользователю указывать напрямую.,Все переменные хранятся в отдельном текстовом файле конфигурации, CMakeCache.txt, который можно редактировать в текстовом редакторе или с помощью специального инструмента настройки графического интерфейса.

CMake имеет много других функций, таких как возможность автоматического обнаружениярасположение многих полезных библиотек и создание настраиваемых исходных / заголовочных файлов из файлов-шаблонов, содержащих директивы CMake, с помощью команды CONFIGURE_FILE().

Преимущества:

  • Высокая переносимость в распространенных средах (например, он может создавать файлы решения для нескольких версий MS Visual C ++, а также файлы сборки для систем Unix (например, Linux)).
  • Используется в нескольких крупных многоплатформенных проектах (например, KDE).)
  • Очень просто настроить простые проекты
  • Я обнаружил, что система проверки зависимостей очень надежна - например, она знает, как перестроить, если вы измените параметры компилятора (в отличие от наивного использованияmake например)

Недостатки:

  • Уродливый, примитивный синтаксис
  • Качество документации варьируется (например, иногда трудно точно сказать, какие свойства влияют на какой-либо данный объект)
  • Требуются некоторые временные затраты
...