Я работаю над проектом статической библиотеки для курса C ++, который я беру. Учитель настаивает на том, чтобы мы определяли только одну функцию для каждого исходного файла, группируя файлы / функции, принадлежащие одному классу, в подкаталогах для каждого класса. В результате получается такая структура:
MyClass
\MyClass.cc (constructor)
\functionForMyClass.cc
\anotherFunctionForMyClass.cc
OtherClass
\OtherClass.cc (constructor)
Я не хотел бы обсуждать, является ли это хорошей практикой или нет, поскольку я просто обязан организовать свой проект таким образом.
Я работаю в Visual Studio 2008 и почему-то получил странные ошибки ссылок при использовании функции с одинаковым именем (и, следовательно, имени файла) в двух классах. По-видимому, это вызвано тем, что Visual Studio помещает все файлы .obj
(по одному для каждого исходного файла) в один промежуточный каталог, перезаписывая ранее сгенерированные объектные файлы при компиляции исходных файлов с одинаковыми именами.
Это можно решить, поместив объектные файлы в подкаталоги на основе относительного пути к входному файлу. Visual Studio позволяет настраивать имена объектных файлов, которые она генерирует, и имеет макросы для использования там, но, похоже, нет макроса для «относительного пути к входному файлу».
Итак, есть ли способ заставить это работать? Если нет, то является ли использование одного проекта для каждого класса лучшим решением?