2012-01-16 32 views
5

Tôi cần tệp cấu hình để chuyển từ C++ sang JS, tôi đang cố sử dụng emscripten trong một dự án. Emscripte đi kèm với một công cụ gọi là emconfigure, thay thế cấu hình tự động cấu hình,CMake có thể tạo tệp cấu hình không?

Nhưng dự án tôi đang xây dựng sử dụng cmake làm hệ thống xây dựng và hiện tại (tháng 12) emscripten chỉ hỗ trợ autoconf - vì vậy tôi bỏ qua nó bằng cách tạo ra các cấu hình và làm một cổng trên thực hiện, do đó, có một cách để tạo ra các tập tin cấu hình từ cmake ?? Tôi không nói về các tập tin thực hiện .. nhưng các tập tin cấu hình chính nó.

+0

Bởi theo cách bạn muốn dịch ngôn ngữ. Bạn có thể cụ thể hơn không? – Neox

+1

Câu hỏi này không rõ ràng. CMake không thể tạo ra một kịch bản được gọi là cấu hình theo cách mà autoconf thực hiện - nó hoạt động khác nhau để thực hiện một công việc tương tự. Nhưng nó có thể thực hiện các thao tác cấu hình trên các tệp trong cây nguồn. Bản dịch ngôn ngữ nào đang được thực hiện? EMScripte có liên quan gì với mọi thứ? – mabraham

Trả lời

15

Vâng, nó có thể:

configure_file(<input> <output> 
       [COPYONLY] [ESCAPE_QUOTES] [@ONLY] 
       [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) 

Example.h.in

#ifndef EXAMPLE_H 
#define EXAMPLE_H 

/* 
* These values are automatically set according to their cmake variables. 
*/ 
#define EXAMPLE "${VALUE}" 
#define VERSION "${VERSION}" 
#define NUMBER ${NUMBER} 

#endif /* EXAMPLE_H */ 

Trong tập tin cmake của bạn:

set(EXAMPLE "This is an example") 
set(VERSION "1.0") 
set(NUMBER 3) 

configure_file(Example.h.in Example.h) 

Configured Example.h:

#ifndef EXAMPLE_H 
#define EXAMPLE_H 

/* 
* These values are automatically set according to their cmake variables. 
*/ 
#define EXAMPLE "This is an example" 
#define VERSION "1.0" 
#define NUMBER 3 

#endif /* EXAMPLE_H */ 

Tài liệu:

+0

tuyệt vời, cảm ơn câu trả lời. Rất hữu ích !! – Jacko

+0

CMake sẽ undef nếu biến đánh giá sai. ví dụ. nếu số là 0, nó sẽ không định nghĩa nó. Có cách nào để khắc phục điều đó?Tôi chỉ sử dụng ifndef để giải quyết nó. –

+0

Bạn đang sử dụng '# cmakedefine' hoặc plain' # define'? Sau này không nên làm điều này. Nếu nó không hoạt động, bạn có thể thêm '#ifnedf ... #define ...' vào tệp mẫu. – ollo

0

có cmake tạo cho bạn các tệp bạn cần để tạo dự án tùy thuộc vào nền tảng mục tiêu của bạn. tuy nhiên bạn cần phải tự viết các tệp của CMakelist.txt cho CMake hoặc bạn phải lấy chúng từ một người khác. nếu emscripten có chúng và bạn đã cài đặt cmake, hãy chuyển đến thư mục gốc của thư mục cource của bạn và khởi chạy cmake để xem danh sách các đối số bạn có thể sử dụng

-7

Cmake là một hệ thống xây dựng. Nó tạo ra Makefiles. Hãy xem here để biết thêm thông tin về điều đó. Nhưng để trả lời ngắn gọn câu hỏi của bạn, bạn không thể tạo các tệp cấu hình bằng cmake.

+2

Sai đồng đều, so sánh với câu trả lời được chấp nhận. – usr1234567

0

Thực tế, không tạo "bộ", nhưng bạn có thể sử dụng các chức năng làm mọi thứ mình làm, như trường hợp của các kiểu dữ liệu vereficação, tiêu đề vereficar và nhiều hơn nữa.

Vâng, tôi sẽ đi xuống một liên kết đến dự án của tôi có chứa tất cả các chức năng đó. Tôi đề nghị rằng một nghiên cứu về nó, bất cứ điều gì gửi cho tôi một email hoặc một cái gì đó để đưa câu hỏi của bạn.

đây: enter link description here

Kiểm tra quá thư mục/DEPS/cmake để xem các chức năng được tạo ra bởi chúng tôi.

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