Я думаю, что корень вашей проблемы в том, что ваше имя файла test.h
, и clang считает, что вы компилируете код C, а не код C ++.Следовательно, когда вы включаете <cassert>
, clang не знает, что он должен искать путь включения C ++.Попробуйте назвать свой файл test.hpp
.Вам нужно только назвать файл, который вы хотите, в качестве заголовка precomp с .hpp
.Вы можете хранить все ваши заголовочные файлы с расширениями * 1005. *. 1006 *
В любом случае, я могу запутаться с gcc / g ++, но Clang следует тому же самому поведению всякий раз, когда я компилирую свой код на Mac.Вот как я использую предварительно скомпилированные заголовки.Читайте дальше ...
Если у вас есть заголовочный файл C ++, который вы хотите прекомпилировать, просто скомпилируйте его как любой другой файл .cpp.Обратите внимание, что я использую .hpp
в качестве расширения файла, поэтому компилятор выбирает его как заголовочный файл C ++.
clang -c precomp.hpp
Это приведет к precomp.hpp.gch
Теперь для использованияпрекомпилируйте любым другим обычным файлом C ++, просто включите обычный файл .hpp
:
// main.cpp
#include "precomp.hpp"
void func1() {...}
void main() {...}
Компилятор автоматически использует соответствующий файл .gch, если он присутствует вместо исходного файла .hpp.