В моем файле Premake я иду:
pchheader("../../"..dir_root.."stdafx.h")
Я обнаружил, что это по крайней мере частично работает. (Вызов несколько отличается для ICC в Windows.)
При компиляции я получаю ровно одно предупреждение:
stdafx.h
../../mylibrary/stdafx.h:1:9: warning: #pragma once in main file
#pragma once
^
Я полагаю, что это происходит из-за компиляции предварительно скомпилированного заголовка GCC (как если бы это был какой-то основной файл). Итак, это предупреждение (вроде?) Оправдано.
Я бы предпочел не удалять #pragma once
что явно в stdafx.h
(хотя я предполагаю, что это исправит предупреждение), потому что сборки не используют PCH.
Это мой единственный вариант, или я могу сделать что-то еще? Я отмечаю это как НКУ а также premake, поскольку решение, использующее любой из них (например, изменение аргументов компиляции, вызов по-другому в Premake), будет в порядке.
Ну, в C ++, ваш главный файл (файл с вашей основной функцией, int main(int argc, char * argv[]
) не должен иметь #pragma once
потому что это только для заголовочных файлов. Так что кажется, что ваша основная функция в stdafx.h
когда это не должно быть. Если это так, поместите его в файл .cpp и включите туда свои заголовочные файлы.
Это всего лишь предупреждение, так что не волнуйтесь.
Других решений пока нет …