#linker #header-files
#компоновщик #заголовочные файлы
Вопрос:
Я добавил некоторые исходные файлы заголовков в общую папку ( ..sharedabc
), а мой файл кода из другой папки ( ..srcxyz
) имеет #include <abc/../foo.hpp>
. Я получаю эту ошибку:
Не удается открыть исходный файл ошибка
Я могу исправить это, указав абсолютный путь, но это изменение должно быть сделано во многих местах. Что я должен увидеть, чтобы исправить это?
Использование VC9 nmake
для компиляции кода. Это проект на основе Makefile.
Комментарии:
1. Как выглядит командная строка, передаваемая компилятору?
2. Как я могу это увидеть. Я набираю только «nmake».
3. Я не использовал
nmake
, но варианты UNIXmake
обычно печатают команды, которые он выполняет, по мере их выполнения.4. Действительно ли ваши инструкции include содержат / ../ в имени пути или вы просто пытаетесь сэкономить на вводе? Поскольку две подобные точки в имени пути означают, что каталог на один уровень выше, so
#include <abc/../foo.hpp>
эквивалентно#include <foo.hpp>
Ответ №1:
Если включаемые файлы взяты из какой-либо библиотеки, используемой вашим кодом, вы захотите указать путь включения с помощью опции компилятора. Для компилятора Visual C параметром командной строки для указания дополнительных включенных каталогов является /I
, например:
cl /I ..shared foo.cpp
Вам нужно соответствующим образом изменить параметры компилятора в вашем Makefile.