2012-01-16 112 views
5

我需要配置文件从C++转换为JS,我试图在项目中使用emscripten。 Emscripte附带了一个名为emconfigure的工具,它取代了autoconf配置,但它取代了autoconf配置,但我正在构建的项目使用cmake作为构建系统,并且当前(1月12日)emscripten只支持autoconf - 所以我绕过它通过生成配置和做一个端口的make,所以有办法从cmake创建配置文件?我不是在讨论make文件,而是配置文件本身。CMake可以生成配置文件吗?

+0

通过你想翻译的语言的方式。你可以说得更详细点吗? – Neox 2012-01-16 23:29:27

+1

这个问题目前还不清楚。 CMake无法以autoconf的方式生成一个名为configure的脚本 - 它的工作方式与做类似的工作不同。但它可以对源树中的文件执行配置操作。正在做什么语言翻译? emscripte与什么有关? – mabraham 2014-12-22 17:51:22

回答

15

是的,它可以:

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 */ 

在你cmake的文件:

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

configure_file(Example.h.in Example.h) 

配置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 */ 

文档:

+0

真棒,感谢您的答案。很有帮助 !! – Jacko 2015-11-12 01:24:02

+0

如果变量的计算结果为false,CMake将取消。例如如果数字是0,它不会定义它。无论如何解决这个问题?我只是用ifndef来解决它。 – 2016-02-18 07:42:51

+0

你使用'#cmakedefine'还是普通的'#define'?后者不应该这样做。如果它不起作用,您可以在模板文件中添加一个'#ifnedf ... #define ...'。 – ollo 2016-03-06 17:51:52

0

yes cmake根据您的目标平台为您生成构建项目所需的文件。但是你需要自己为CMake编写CMakelist.txt文件,或者你必须从其他人那里获取它们。如果emscripten拥有它们并且安装了cmake,请转至您的cource目录的根目录并启动cmake以查看可以使用的参数列表

-7

Cmake是一个构建系统。它生成Makefiles。查看here了解更多信息。但是要简要回答你的问题,不能用cmake生成配置文件。

+2

明显错误,与接受的答案进行比较。 – usr1234567 2015-03-21 10:36:18

0

事实上,不要生成一个“set”,但是你可以使用函数完成他所做的一切,比如vereficação数据类型,vereficar头文件等等。

那么,我会去我的项目,包含所有这些功能的链接。我建议对它进行研究,任何事情都会寄给我一封电子邮件或其他东西来回答你的问题。

这里:enter link description here

检查太/ DEPS/cmake的文件夹以查看由我们创造的功能。

相关问题