Просто изменить путь включения недостаточно, если проект использует библиотеку, которая требует компиляции. Причина в том, что компилятор просто видит директиву include для файла заголовка; он не может догадаться (и почти невозможно догадаться) о том, какие другие .cpp-файлы нужно будет скомпилировать, чтобы получить все, что вам нужно.
Вы могли бы теоретически захватить исходные файлы Boost и напрямую ссылаться на них из своего проекта, но это означает, что вам также нужно отслеживать, каковы их зависимости и захватывать их.
Boost, как и все крупные проекты, имеет систему сборки, в которой эти зависимости уже позаботились. Теоретически вы должны иметь возможность ссылаться на проект системы сборки из своего собственного и говорить: «Используйте это». Однако экстремальное разнообразие в системах сборки C++ означает, что это вообще невозможно; вы не можете ссылаться на проект Boost.Build из Visual Studio или проект SCons от CMake или что-то в этом роде.
Так что, в общем, ваш лучший выбор - построить проект, используя собственную систему сборки, затем взять результат этой сборки (в случае Boost, каталог, полный файлов .lib и .dll) и ссылаться на ваш проект.
спасибо @SebastianRedl, поймите. если компилятор может видеть только заголовки, то как компилятор знает, какая библиотека lib/dll имеет ресурсы для этого h-файла? – Xin
, потому что вы рассказываете об этом через настройки командной строки или проекта –