Внешние параметры для компиляции проекта 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
например)
Недостатки:
- Уродливый, примитивный синтаксис
- Качество документации различается (например, иногда трудно точно сказать, какие свойства влияют на данный объект)
- Некоторое время вложено