Как запустить cl.exe для кроссплатформенного приложения без stdafx.h - PullRequest
0 голосов
/ 08 февраля 2020

Допустим, у меня такой простой код

// main.cpp

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string text = "Hello world.";
    cout<<text<<endl;
    return 0;
}

Он работает нормально. Теперь я хочу убедиться, что это кроссплатформенный. На github CI у меня есть проблема, чтобы проверить это со многими компиляторами, но когда дело доходит до cl.exe, у меня возникают трудности

cl.exe /std:c++latest main.cpp

фатальная ошибка C1083: Невозможно открыть файл включения: 'iostream' : Нет такого файла или каталога

Я знаю, это потому, что Microsoft ожидает от меня включения stdafx.h в начале моего кода, что я не хочу делать. Я пробовал несколько других работ, которые не работали:

  • попробуйте 1
cl.exe /std:c++latest /Y- main.cpp

фатальная ошибка C1083: Невозможно открыть файл включения: 'iostream' : Нет такого файла или каталога



  • try 2
cl.exe /std:c++latest /Yc"stdafx.pch" /Yu"stdafx.h" /FI"stdafx.h" main.cpp

Неустранимая ошибка C1083: Невозможно открыть предварительно скомпилированный файл заголовка : 'stdafx.pch': Нет такого файла или каталога



  • try 3
cl.exe /std:c++latest /Yu"stdafx.h" /FI"stdafx.h" main.cpp

фатальная ошибка C1083 : Невозможно открыть файл скомпилированного заголовка: 'stdafx.pch': Нет такого файла или каталога



  • try 4
cl.exe /std:c++latest /Yc"stdafx.h" /FI"stdafx.h" main.cpp

фатальная ошибка C1083: Невозможно открыть включаемый файл: 'stdafx.h': Нет такого файла или каталога


Итак, каково решение?

...