Внешние параметры для компиляции проекта VS2008 C++

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

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

5 ответов

Решение

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

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

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

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

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

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

<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"
/>

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

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

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

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

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

Вы можете использовать систему сборки, такую ​​как 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 например)

Недостатки:

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