2011-11-12 32 views
11

Tôi đang cố gắng xây dựng một dự án với một dự án khác. Có rất nhiều libs trong đó và tôi không chắc chắn nơi các biểu tượng không được yêu cầu bắt buộc có mặt.Trong studio trực quan cách bao gồm tất cả .libs trong một thư mục

Có cách nào tôi có thể bao gồm tất cả các tệp .lib trong khi biên dịch không?

Tôi đã cung cấp thư mục lib làm đầu vào bổ sung cho trình liên kết, nhưng nó yêu cầu bao gồm các tệp .lib riêng lẻ. Có tùy chọn để nói bao gồm tất cả .lib giây trong thư mục này không?

Trả lời

3

AFAIK không có cách nào để làm điều đó: tùy chọn của bạn là để

  • bao gồm từng lib trong Linker-> Input-> Dependencies bổ sung

  • bao gồm libs qua chỉ thị pragma trong nguồn nộp tức là thêm

pragma comment (lib, "some_lib.lib")

  • nếu các dự án này là một phần của giải pháp, bạn có thể chọn chúng là "Dự án Dependencies"

Cách đơn giản nhất để làm điều đó là sử dụng pragma vì bạn chỉ phải làm điều đó một lần cho cả gỡ lỗi và phát hành. Ví dụ, bạn có thể làm một danh sách thư mục của thư mục lib của bạn và sau đó sao chép và qua phần còn lại của chỉ thị vào (các) tệp nguồn của bạn.

Hơn nữa, để có được một danh sách biểu tượng của một thư viện tĩnh, bạn có thể chạy công cụ dumpbin trên các tệp lib (AFAIR với tùy chọn/ALL).

+0

Đã có thay đổi trong các phiên bản gần đây của Visual Studio chưa?Hơn nữa, không nên viết một kịch bản dựng sẵn để quét thư mục? – danijar

+0

Tôi đang sử dụng VS2015, và tôi đã có thể vào Linker-> Input-> Dependencies bổ sung và thêm [thư mục] \ *. Lib và có nó làm việc cho tôi ngày hôm nay. – RomSteady

0

Điều này sẽ xuất ra một tệp sẽ liệt kê tất cả các tệp .lib. Bạn có thể sao chép và dán hoặc sửa đổi nó theo nhu cầu của bạn.

Lưu dưới dạng hàng loạt.

for %%f in (*.lib) DO echo|set /p=%%~f >> alllibs.txt 
2

Bạn chỉ có thể viết "someFolder/*. Lib", nơi bạn có để xác định các thư viện liên kết chống lại

11

câu trả lời bigD là đúng.

Nơi bạn sẽ thực sự làm được điều này, trong VS 2012 ít nhất là bằng cách kích chuột vào dự án, sau đó đi:

Properties> Configuration Properties> Linker> Command Line> Tùy chọn thêm

Trong hộp đó, bạn sẽ chỉ cần gõ:

"[libFolder]\*.lib" 

bạn có thể có nhiều địa điểm bằng cách tách biệt các địa điểm với một không gian, như vậy:

"[libFolder1]\*.lib" "[libFolder2]\*.lib" 
+0

Điều này dễ dàng hơn rất nhiều so với việc thêm tất cả riêng lẻ. Không chắc chắn nếu tôi bao gồm libs mà tôi không cần tuy nhiên. 1 để tiết kiệm cho tôi một thời gian trong khi hack xung quanh. –

+0

Bạn cũng có thể thêm/VERBOSE: UNUSEDLIBS vào dòng để nhận bất kỳ thư viện nào chưa được sử dụng. –

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