2012-03-11 29 views
6

Tôi đã sử dụng GNU autoconf để tạo kịch bản cấu hình cho chương trình của tôi, hiện tôi đang cố gắng biên dịch chéo cho Windows.Cho biết một kịch bản cấu hình để sử dụng đường dẫn tương đối cho --datarootdir

Trong Linux, để thay đổi vị trí của các tệp dữ liệu tôi cung cấp --datarootdir=/blah hoạt động tốt. Tuy nhiên, theo Windows, đường dẫn của ứng dụng của tôi sẽ không được biết đến cho đến khi thời gian chạy (vì người dùng có thể chọn cài đặt nó ở bất cứ đâu.) Vì vậy, tôi muốn đặt thư mục dữ liệu là thư mục hiện tại, bất cứ nơi nào có thể tại thời điểm ứng dụng được khởi chạy.

Thật không may, đi qua --datarootdir=. không hoạt động:

configure: error: expected an absolute directory name for --datarootdir: . 

Làm thế nào để bạn biết Autoconf/configure mà bạn muốn một đường dẫn tương đối đến thư mục hiện tại thời gian chạy?

Trả lời

3

Tôi nghĩ rằng tôi đã tìm thấy một giải pháp một phần cho việc này. Có vẻ như --datarootdir được sử dụng để kiểm soát nơi các tệp được cài đặt, do đó, nó cần phải là đường dẫn tuyệt đối vì lợi ích của make install. Tuy nhiên, nó có thể bị ghi đè trong quá trình biên soạn:

make datadir="." 

Bằng cách này, trong khi biên soạn mã cho rằng $(datadir) là "." nhưng khi chạy make install các tập tin vẫn được đặt trong đường dẫn tuyệt đối cho ./configure --datarootdir=...

+0

Tất nhiên tôi đã từ nhận ra rằng isn này không phải là giải pháp tốt nhất. Khi khởi động .exe trực tiếp nó hoạt động tốt (.exe nằm trong thư mục hiện hành), nhưng khi nhấp đúp vào một tập tin tài liệu liên kết với ứng dụng, .exe được khởi chạy từ thư mục của tệp tài liệu, có nghĩa là các tệp dữ liệu không thể được tìm thấy ... – Malvineous

1

Chỉ cần cung cấp cho nó một đường dẫn tuyệt đối đó là tương đương với thư mục làm việc hiện tại:

./configure --datarootdir=$PWD 
+0

Vấn đề là nếu một người dùng chọn cài đặt ứng dụng của tôi trên hệ thống đích vào C: \ Program Files và một ứng dụng khác vào D: \ Apps, datarootdir sẽ khác nhau giữa hai ứng dụng. $ PWD sẽ chỉ chính xác ở thời gian biên dịch, trong khi tôi cần giá trị tương đối so với thư mục hiện tại thời gian chạy. – Malvineous

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