Параметр cl не может создать файл, который представлен в относительном расположении unc

Я пытаюсь создать файл, представленный по пути UNC. Здесь я привожу простой пример для большей ясности.

main.cpp

#include <iostream>
#include "additionApi.hpp"

int main(){

    int a=10, b=20;
    std::cout<<"Addition:"<<addNumbers(a,b);

    return 0;
}

tmpOperation \ additionApi.hpp

int addNumbers(int a, int b);

tmpOperation \ additionApi.cpp

#include <iostream>
int addNumbers(int a, int b){
    return a+b;
}

tmpOperation \ Makefile

tmpOperationDir = \\unc\path\location\tmpOperation
%.obj:%.cpp
    cl /TP /Od /Oy- -Zi /EHsc -I"." -I"$(tmpOperationDir)" /c $< /Fo$@

../math_exe:additionApi.obj ../main.obj
    link /OUT:../math.exe  additionApi.obj ../main.obj

all:../math_exe

В приведенной выше файловой структуре я использую команду make из каталога tmpOperaion. main.cpp находится вне каталога tmpOperaion. Итак, я обращаюсь к main.cpp, используя относительный путь как ../main.cpp в Makefile. Но он не может создать основной файл и выдает следующую ошибку.

gmake: *** No rule to make target `../main.obj', needed by `../math_exe'.  Stop. 

Итак, наконец, ниже мои простые вопросы:

  1. Можем ли мы построить файл (main.cpp в данном примере) относительно пути UNC?
  2. Поддерживают ли пути UNC включение файлов в make-файл, например -I "$ (UNC_PATH)"?

Я не могу воспроизвести ошибку. Какую версию Make вы используете? А вы уверены, что путь ../main.cpp правильный? То есть файл main.cpp находится в каталоге над каталогом, в котором вы выполняете Make? (Обратите внимание, что каталог, в котором вы выполняете Make, не обязательно находится в том месте, где находится make-файл.)

Beta 10.08.2018 20:39

только путь правильный. Вы используете Microsoft Visual Studio 2017? Тем не менее вы не можете воспроизвести, пожалуйста, пришлите мне шаги, которые вы выполняете. И мой прямой вопрос: поддерживают ли пути UNC включение файлов в файл make, например -I "$ (UNC_PATH)"? и можем ли мы создать файл (main.cpp в данном примере) относительно пути UNC?

nhkrishna 13.08.2018 08:27

Ваши два «прямых» вопроса отличаются от предполагаемого исходного вопроса («что здесь не так?») И неясны. Задайте вопрос один.

Beta 13.08.2018 18:46

@Beta в основном я сомневаюсь в использовании путей UNC в моем Makefile. Вопрос 1 относится только к моему исходному сообщению. Не могли бы вы прояснить оба, если знаете ?? (else) давайте поговорим только о вопросе 1.

nhkrishna 14.08.2018 06:19

Для вопроса 1, вместо использования относительного пути, если мы используем абсолютный путь, это решает проблему.

nhkrishna 14.08.2018 08:43

Для вопроса 2 каталоги пути UNC правильно включены в Makefile.

nhkrishna 14.08.2018 11:22
0
6
64
1

Ответы 1

Возможно, нам придется сделать это в несколько этапов.

Сначала измените это:

%.obj:%.cpp

к этому:

../%.obj:%.cpp

А попробуйте make ../main.o и скажите результат.

Другие вопросы по теме