tôi có một dự án C++ lớn, với các tệp nguồn được tổ chức trong nhiều thư mục (trên hệ thống tệp).Dự án VisualStudio với nhiều tệp nguồn cùng tên?
trong hai thư mục này, tôi có các tệp có cùng tên. ví dụ:
\MyProject\foo\Blurp.cpp
\MyProject\foo\File.cpp
\MyProject\bar\File.cpp
\MyProject\bar\Knoll.cpp
dự án là nền tảng chéo, và tôi sử dụng autoconf trên Linux và OSX, nhưng phải sử dụng MSVC trên W32 (do một số bên thứ 3 C++ thư viện tôi sử dụng trên W32 và C++ không tương thích giao diện nhị phân trên các trình biên dịch)
ở phía MSVC, dự án được tổ chức thành nhiều "Bộ lọc" (các Thư mục ảo đó) (với tên tương ứng với Thư mục các tệp đang sống), vì vậy tôi có thể phân biệt chúng.
bây giờ vấn đề là, khi tôi xây dựng dự án, MSVC đặt các tập tin đối tượng trong một diretory phẳng duy nhất, và tôi kết thúc với:
\MyProject\Release\Blurp.obj
\MyProject\Release\File.obj
\MyProject\Release\Knoll.obj
như có thể thấy, chỉ có một File.obj
là, vì vậy một đối tượng nhị phân bị thiếu. rõ ràng, trình liên kết than phiền, vì nó không thể tìm thấy các lớp/hàm/... được định nghĩa trong tệp đối tượng bị thiếu đó.
có cách nào để thông báo cho MSVC tạo tệp đối tượng có tên duy nhất tùy thuộc vào thư mục (hoặc bộ lọc) các tệp đó nằm trong không?
tôi tưởng tượng cái gì đó như:
\MyProject\Release\foo\Blurp.obj
\MyProject\Release\foo\File.obj
\MyProject\Release\bar\File.obj
\MyProject\Release\bar\Knoll.obj
hoặc
\MyProject\Release\foo-Blurp.obj
...
hoặc bất cứ điều gì. tất cả các hệ thống xây dựng khác mà tôi biết (CMake, autotools) có thể xử lý nhiều tệp cùng tên.
câu hỏi này tương tự như 3729515, nhưng tôi hiện đang bị kẹt với VS2008. (giải pháp được đề xuất ở đó cho VS2008 - để đặt Object-Directory cho mỗi tệp được đề cập - là thứ thực sự hoạt động theo lý thuyết, nhưng tôi muốn tránh các lý do thực tế)
cảm ơn đầu vào; $ (InputDir) \ $ (IntDir) \ có vẻ hứa hẹn, và/nhưng tôi thực sự muốn có một thiết lập dự án (vì những lý do được chỉ ra), tốt nhất là ngay cả trong một bảng tính, do đó thay đổi trở nên rõ ràng. Tôi không phải là rất quan tâm đến các tập tin obj lộn xộn cây nguồn của tôi (mặc dù trong tổng số có một số hàng trăm tập tin obj tạo ra) –
Vâng, giải pháp này đã không làm việc cho tôi. Tôi đã nhận lỗi về một cái gì đó về "không thể tìm thấy con đường bla bla bla". Vì vậy, tôi đã đưa ra một giải pháp: Tôi loại trừ "fileWithSameName.cpp" từ giải pháp của tôi, và thêm một số khác, "AnotherFile.cpp" bên trong có dòng duy nhất: [include "fileWithSameName.cpp"]. Nó làm việc cho tôi – Illidan
Điều này không làm việc cho tôi trong VS 2015. Nhưng giá trị tài sản hơi khác nhau được đề xuất tại https://stackoverflow.com/questions/3695174/visual-studio-2010s-strange-warning-lnk4042/3731643# 3731643 không hoạt động: $ (IntDir) /% (RelativeDir)/ – peastman