Компилятор командной строки Visual C ++ (CL.EXE) перенаправляет файлы OBJ - PullRequest
7 голосов
/ 10 октября 2011

Компилятор (CL.EXE) может принимать несколько исходных файлов, но любит генерировать все файлы OBJ в каталоге, к которому он вызывается.Я не смог найти флаг компилятора, чтобы установить выходной каталог, но я нашел его для отдельного OBJ, но он не может принимать несколько источников.много целей для NMAKE, есть ли простой способ сделать это через CL?

Ответы [ 2 ]

11 голосов
/ 04 марта 2012

Оказывается, опция /Fo действительно работает, но указанная вами директория должна заканчиваться обратной косой чертой.Таким образом,

cl  /Fo.\obj\  -c foo.c fee.c

работает, но cl /Fo.\obj -c ... завершится ошибкой.

1 голос
/ 23 июля 2018

Просто чтобы добавить к единственному ответу. В случае, когда путь obj указан в кавычках, завершающий обратный слеш должен быть либо добавлен после кавычки закрытия пути, либо экранирован, если добавлен перед кавычкой.

cl  /Fo"quoted path\obj"\  -c foo.c fee.c

OR

cl  "/Foquoted path\obj"\  -c foo.c fee.c

OR

cl  /Fo"quoted path\obj\\"  -c foo.c fee.c

Говоря о NMAKE, подобный синтаксис ожидается при передаче значений макросов в кавычках на NMAKE командная строка. Задняя косая черта, кажется, имеет решающее значение для наблюдения.

nmake SOMEDIR="quoted path\obj"\

OR

nmake SOMEDIR="quoted path\obj\\"

OR

nmake "SOMEDIR=quoted path\obj"

НЕ

nmake SOMEDIR="quoted path\obj\"

, так как это приведет к экранированной кавычке \" и будет захватывать все остальное, что следует в командной строке, и помещать его в $(SOMEDIR). Мне потребовалось время, чтобы диагностировать такое поведение, надеюсь, это сэкономит время кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...