C++. Сборник рецептов | страница 36
>> "С:Program Files\Microsoft Visual Studio .NET 2003\VC\bin\vcvars32.bat"
>Setting environment for using Microsoft Visual Studio 2005 tools.
>(IF you have another version of Visual Studio or Visual C++ installed
>and wish to use its tools from the command line, run vcvars32.bat for
>that version.)
>> cl -c -nologo -EHsc -GR -Zc:forScope -Zc:wchar_t -MD -I.. -Fohollobeatles hellobeatles.cpp
>hellobeatles.cpp
>> link -nologo -out:hellobeatles.exe -libpath:../johnpaul -libpath:../georgeringo libjohnpaul.lib libgeorgeringo.lib
>> hellobeatles.obj
Опция -I используется для указания пути, где находятся заголовочные файлы. Когда компилятор — а на самом деле препроцессор — встречает директиву >include
в виде:
>#include "file"
он обычно пытается вначале найти подключаемый файл, интерпретируя указанный путь относительно директории, в которой находится обрабатываемый исходный файл. Если этот поиск не дает результатов, он пытается найти этот файл в одной из директорий, указанных в опции -I, а затем в директориях, указанных в инструментарии, который часто настраивается с помощью переменных среды.
Эта ситуация аналогична включению заголовочного файла с помощью угловых скобок, как здесь:
>#include
за исключением того, что обычно компиляторы не интерпретируют указанный таким образом путь относительно местоположения обрабатываемого исходного файла.
Есть несколько интересных аспектов, связанных с командными строками из табл. 1.13.
В Windows вход компоновщика состоит из объектных файлов, статических библиотек и библиотек импорта. В Unix он состоит из объектных файлов, статических и динамических библиотек.
Как в Windows, так и в Unix библиотеки могут передаваться компоновщику двумя способами:
• с помощью указания пути в командной строке;
• с помощью указания только имени библиотеки и места поиска библиотек.
Таблица 1.13 иллюстрирует оба метода.
Места поиска библиотек обычно могут быть указаны в командной строке. Большинство компоновщиков для этой цели используют опцию -L