非C项目的跨平台自动构建 实际上,我需要在Windows/Linux平台上构建不同语言的二进制文件——java、Pascal(Delphi/FPC)、C++、C等。
如何做到这一点?我现在正在使用CMake for C项目,如下所示:非C项目的跨平台自动构建 实际上,我需要在Windows/Linux平台上构建不同语言的二进制文件——java、Pascal(Delphi/FPC)、C++、C等。,java,c++,build,cmake,pascal,Java,C++,Build,Cmake,Pascal,如何做到这一点?我现在正在使用CMake for C项目,如下所示: cmake--build.withCMakeLists.txtproviden.Free-Pascal提供了自己的构建系统。见例 默认的makefiles(基于大部分生成的gmake makefiles)已经具有交叉功能 我不知道有谁将cmake与免费Pascal一起使用,我在他们的邮件列表上已经有十多年了。免费Pascal提供了自己的构建系统。见例 默认的makefiles(基于大部分生成的gmake makefiles
cmake--build.
withCMakeLists.txt
providen.Free-Pascal提供了自己的构建系统。见例
默认的makefiles(基于大部分生成的gmake makefiles)已经具有交叉功能
我不知道有谁将cmake与免费Pascal一起使用,我在他们的邮件列表上已经有十多年了。免费Pascal提供了自己的构建系统。见例 默认的makefiles(基于大部分生成的gmake makefiles)已经具有交叉功能
我不知道有谁使用带有免费Pascal的cmake,我在他们的邮件列表上已经有十多年了。每个
*make
系统都不适用于Java项目,因为make
基本上假设“一个文件输入,一个文件输出”(例如.c
到.o
)或“N个文件输入,一个文件输出”(例如,*.o
到.a
,.dll
,.exe
)中的一个。使用这些“原语”执行构建
但是Java编译器本质上要求“输入完整的sourcetree,输出完整的类树”
这两种模式不匹配,尝试这样做迟早会带来比它的价值更多的小问题
您所能做的最好的事情就是从顶级Makefile中调用Ant或Maven(或任何东西)
编辑:不要忘记另外两件事:
- 用
编译Java是一门黑暗而神秘的艺术。你不会发现很多人同时了解Java和make,并且能够用这种组合解决问题。Ant/Maven和Java是一种标准的组合。用这种组合找到帮助或建议根本没有问题make
- Java中的许多框架都需要特殊的编译步骤。在几乎所有情况下,都有Ant和Maven的插件可用。使用make,您将不得不再次重新发明轮子
*make
系统都不适用于Java项目,因为make
基本上假定“一个文件输入,一个文件输出”(例如.c
到.o
)或“N个文件输入,一个文件输出”(例如.o
到.a
,.dll
,.exe
)中的一个。使用这些“原语”执行构建
但是Java编译器本质上要求“输入完整的sourcetree,输出完整的类树”
这两种模式不匹配,尝试这样做迟早会带来比它的价值更多的小问题
您所能做的最好的事情就是从顶级Makefile中调用Ant或Maven(或任何东西)
编辑:不要忘记另外两件事:
- 用
编译Java是一门黑暗而神秘的艺术。你不会发现很多人同时了解Java和make,并且能够用这种组合解决问题。Ant/Maven和Java是一种标准的组合。用这种组合找到帮助或建议根本没有问题make
- Java中的许多框架都需要特殊的编译步骤。在几乎所有情况下,都有Ant和Maven的插件可用。使用make,您将不得不再次重新发明轮子
CMakeLists.txt
文件。一个严肃的java项目应该附带一个基于Ant、Maven、Gradle或已经有任何其他构建工具了。我从未见过任何使用cmake构建的Java项目。它不是适合这项工作的工具。而且,Java二进制文件本身就是跨平台的。你可以在Windows上构建它,然后在Linux上运行。@jbnize是的,我知道。我只是想让构建过程对我的软件支持的所有语言都通用。对于Java,我认为,我可以分别使用javac
和java
命令进行编译和运行。但我真的不知道如何使java二进制文件和标准(C++,Pascal)的java%s
运行变得普通二进制文件…@shybovycha——在Java应用程序上未调用cl.exe
…您确定您首先运行了vcvvarsall.bat
(用于设置命令环境以使工具正常工作的Microsoft实用程序)吗?这很重要。否则,这是“安全性”吗Java应用程序调用本地系统命令时出现问题?您可以查看scons
(基于Python的构建系统)来运行vcvvarsall.bat
进行设置,但是scons
更像“make like”,也不太适合Java构建…编写跨平台构建和应用程序是一个复杂的主题。你有更具体的问题吗?是的。我如何配置CMake来编译Java/pascal/delphi/c#文件?我可以为我拥有的每个源代码创建一个自定义CMakeLists.txt
文件。一个严肃的Java项目应该附带一个基于Ant、Maven、Gradle或任何其他构建工具的构建过程。我从未见过任何使用cmake构建的Java项目。它不是适合这项工作的工具。而且,Java二进制文件本身就是跨平台的。你可以在Windows上构建它,然后在Linux上运行。@JBNizet是的,我知道。我只是想让构建过程对所有语言都通用uages我的软件支持。对于java,我认为我可以分别使用javac
和java
命令来编译和运行。但是我真的不知道如何使java二进制文件和标准(C++,Pascal)的java%s
运行变得普通二进制文件…@shybovycha——在Java应用程序上未调用cl.exe