У меня есть программа на Visual С++, которая использует предварительно скомпилированные заголовки (stdafx.h
). Теперь мы переносим приложение в Linux с помощью gcc 4.x.
Вопрос заключается в том, как обрабатывать предварительно скомпилированный заголовок в обеих средах. Я googled, но не могу прийти к выводу.
Очевидно, я хочу оставить stdafx.h
в Visual Studio, так как база кода довольно большая, а предварительно скомпилированные заголовки увеличивают время компиляции.
Но вопрос в том, что делать в Linux. Вот что я нашел:
- Оставьте
stdafx.h
как есть. gcc компилирует код значительно быстрее, чем VС++ (или это только моя машина Linux сильнее...:)), поэтому я, возможно, доволен этой опцией. -
Используйте подход здесь - сделайте
stdafx.h
похожим (установитеUSE_PRECOMPILED_HEADER
только для VS):#ifdef USE_PRECOMPILED_HEADER ... my stuff #endif
-
Используйте подход здесь - скомпилируйте VС++ с
/FI
до неявно includestdafx.h
в каждом файле cpp. Поэтому в VS ваш код можно легко переключать, чтобы компилироваться без предварительно скомпилированных заголовков, и код не должен изменяться.
Мне лично не нравятся зависимости, а беспорядокstdafx.h
подталкивает большую базу кода. Поэтому вариант привлекателен для меня - на Linux у вас нетstdafx.h
, но при этом можно включить только предварительно скомпилированные заголовки на VS только/FI
. - В компиляции Linux
stdafx.h
только как предварительно скомпилированный заголовок (mimic Visual Studio)
Ваше мнение? Существуют ли другие подходы к решению проблемы?