2014-09-22 21 views
7

Tôi đang viết một ứng dụng đa nền tảng. Một phiên bản sẽ hoạt động theo Win32, thứ hai - trên Windows Phone.Cách chia sẻ tệp mã nguồn C++ giữa các dự án trong Visual Studio?

Tôi muốn sử dụng lại lõi C++ của mình - đặc biệt là không có nền tảng phụ thuộc bên trong, chỉ STL. Tôi muốn làm như vậy, tôi muốn sử dụng cùng một tập tin nguồn trong hai dự án: thư viện Win32 tĩnh (.lib) và Windows Phone Component (C++/CLI).

Làm cách nào tôi có thể định cấu hình hai dự án này để sử dụng chính xác cùng một tệp nguồn và tiêu đề?


Ok, hãy lấy một ví dụ. Hãy nói rằng, tôi có dự án:

MyApp.Library [win32 lib] 
    myClass.cpp 
    myClass.h 

Thư viện này được biên soạn để .dll tập tin và sau đó nhập khẩu trong ứng dụng Win32:

MyApp.Win32App [win32 C#] 

Kể từ win32 không tương thích với windows phone vào mức độ nhị phân , Tôi không thể sử dụng trực tiếp lib đó. Nhưng vì Thư viện chỉ sử dụng STL, tôi có thể tạo Windows Phone Component, đặt tất cả các nguồn của nó ở đó và xây dựng.

MyApp.Component [WinPhone component] 
    myClass.cpp 
    myClass.h 

Tôi muốn hai tệp này chính xác giống như tệp được sử dụng trong Thư viện. Tôi nên tổ chức dự án để đạt được hiệu quả này như thế nào?

+0

Chăm sóc để bình luận về downvote? – Spook

+0

Điều gì về việc có (các) ứng dụng chính và thư viện trong một giải pháp, và có các cấu hình xây dựng phù hợp cho tất cả chúng? –

+1

Tôi không phải là downvoter, nhưng nó thực sự khó khăn để xem vấn đề ở đây. –

Trả lời

4

Bạn có thể thêm mã nguồn từ một vị trí chung cho nhiều dự án. Tôi làm điều đó rất nhiều; Tôi có mã trong một thư mục chung mà là ở cùng cấp trong hệ thống phân cấp thư mục như hầu hết các tập tin dự án của tôi. Nó chỉ đơn giản là việc thêm các tệp .h và .cpp từ thư mục chung vào các dự án khác nhau của bạn.

Tôi đã nhận thấy rằng VisualStudio có một chút cáu kỉnh và khó khăn nếu bạn sử dụng một ổ đĩa mạng cho nguồn chung, vì vậy tôi không làm điều đó. Nhưng miễn là tất cả mã nguồn của bạn là trên các ổ đĩa cục bộ và IDE biết nơi để tìm chúng, thì không có vấn đề gì khi có cùng một tệp nguồn trong nhiều dự án.

+0

vì vậy bạn đã làm trong một cảm giác không thực sự giải quyết vấn đề - trừ khi có trường hợp mutiple cùng một tập tin là giải pháp của bạn - ngắn đưa vào chia sẻ thành một lib của riêng mình, là có thực sự không có cách nào để thêm chúng tương đối? – serup

+1

@ serup Không cần nhiều phiên bản của tệp nguồn để có các dự án khác nhau trong các thư mục khác nhau tham chiếu đến cùng một tệp nguồn. Tôi có một sửa đổi cho câu trả lời trước đây của tôi: VisualStudio là OK với một dự án tham chiếu nguồn trên ổ đĩa mạng. Nó không hài lòng với các tệp dự án trên ổ đĩa mạng. Tôi phát triển trên một số máy trên cùng một mạng nội bộ, và nhiều dự án của tôi bao gồm các lớp học từ thư viện lớp gia đình của tôi trên một ổ đĩa mạng. – Logicrat

+0

vâng tôi tìm thấy một giải pháp đơn giản phù hợp với tôi - bạn có thể xem câu trả lời của tôi – serup

0

một cách là đặt tất cả các tệp .hpp và .cpp vào một thư mục riêng biệt - gọi nó là "Được chia sẻ".

Sau đó thêm một thư mục bổ sung bao gồm bên trong thuộc tính cấu hình giải pháp của bạn - thư mục này phải là đường dẫn tương đối.

Sau đó thêm CHỈ các tập tin cpp tương đối từ thư mục chia sẻ vào dự án của bạn

NB! Nếu bạn đã bao gồm "stdafx.h" bên trong tệp .cpp của bạn trong thư mục Được chia sẻ, thì hãy nhận xét chúng ra.

+1

Nhiều tệp '.cpp' được chia sẻ của tôi bao gồm' "stdafx.h" '. Mỗi tệp dự án có bản sao cục bộ của stdafx riêng. Trong một số trường hợp, tôi phải thêm thư mục dự án vào cuối danh sách các thư mục để bao gồm, nhưng điều đó cho phép tôi giữ chức năng của các tiêu đề được biên dịch trước. – Logicrat

+0

@Logicrat chỉ gặp vấn đề với việc hủy đăng ký - đã phải đặt dự án không liên quan thành KHÔNG sử dụng các tiêu đề được biên dịch sẵn – serup

Các vấn đề liên quan