Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
非C项目的跨平台自动构建 实际上,我需要在Windows/Linux平台上构建不同语言的二进制文件——java、Pascal(Delphi/FPC)、C++、C等。_Java_C++_Build_Cmake_Pascal - Fatal编程技术网

非C项目的跨平台自动构建 实际上,我需要在Windows/Linux平台上构建不同语言的二进制文件——java、Pascal(Delphi/FPC)、C++、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 for C项目,如下所示:


cmake--build.
with
CMakeLists.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(或任何东西)

编辑:不要忘记另外两件事:

  • make
    编译Java是一门黑暗而神秘的艺术。你不会发现很多人同时了解Java和make,并且能够用这种组合解决问题。Ant/Maven和Java是一种标准的组合。用这种组合找到帮助或建议根本没有问题

  • Java中的许多框架都需要特殊的编译步骤。在几乎所有情况下,都有Ant和Maven的插件可用。使用make,您将不得不再次重新发明轮子


每个
*make
系统都不适用于Java项目,因为
make
基本上假定“一个文件输入,一个文件输出”(例如
.c
.o
)或“N个文件输入,一个文件输出”(例如
.o
.a
.dll
.exe
)中的一个。使用这些“原语”执行构建

但是Java编译器本质上要求“输入完整的sourcetree,输出完整的类树”

这两种模式不匹配,尝试这样做迟早会带来比它的价值更多的小问题

您所能做的最好的事情就是从顶级Makefile中调用Ant或Maven(或任何东西)

编辑:不要忘记另外两件事:

  • make
    编译Java是一门黑暗而神秘的艺术。你不会发现很多人同时了解Java和make,并且能够用这种组合解决问题。Ant/Maven和Java是一种标准的组合。用这种组合找到帮助或建议根本没有问题

  • Java中的许多框架都需要特殊的编译步骤。在几乎所有情况下,都有Ant和Maven的插件可用。使用make,您将不得不再次重新发明轮子


编写跨平台构建和应用程序是一个复杂的主题。你有更具体的问题吗?是的。我如何配置CMake来编译java/pascal/delphi/c#文件?我可以为我拥有的每个源代码创建一个自定义的
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