什么';“这是最好的方式”;一揽子计划;c应用程序?

什么';“这是最好的方式”;一揽子计划;c应用程序?,c,build,makefile,C,Build,Makefile,每次我让一个c应用程序无人值守一段时间,升级我的发行版或更改一些包,构建就会立即中断 我需要的是一个构建系统,它下载特定版本为.zip的特定库,并将其作为构建过程的一部分安装在计算机上。更好的方法是将本地安装到/lib文件夹中。 但是我也有一些依赖项,比如库可能需要libjpeg-dev来实现完整的功能集 我知道的构建系统(make、tup、cmake)不处理拉式依赖关系。我想要像maven for c这样的东西,它存在吗?您可以使用-M和gcc的相关标志,让您的Makefile自动生成依赖项;

每次我让一个c应用程序无人值守一段时间,升级我的发行版或更改一些包,构建就会立即中断

我需要的是一个构建系统,它下载特定版本为.zip的特定库,并将其作为构建过程的一部分安装在计算机上。更好的方法是将本地安装到/lib文件夹中。 但是我也有一些依赖项,比如库可能需要libjpeg-dev来实现完整的功能集


我知道的构建系统(make、tup、cmake)不处理拉式依赖关系。我想要像maven for c这样的东西,它存在吗?

您可以使用
-M
gcc
的相关标志,让您的
Makefile
自动生成依赖项;因此,如果外部包含的文件已更改,则将完成构建

你可能对我感兴趣。它将检测某些依赖项,但不会提取它们。我也能帮上忙

关于提取依赖项,这是特定于操作系统的,并且与。因此,在Debian或Ubuntu(使用
aptitude
和软件包)和Fedora(使用
yum
和软件包)上是不同的

看起来您需要一个通用的包管理器,但是没有每个Linux发行版都有自己的包管理(我听说Window或MacOSX有几个或没有,这取决于您如何计算它们)

顺便说一句,包的管理是系统管理员的工作。他当然不希望这是完全自动的(因为包管理器可以检测特定于他的计算机的一些冲突)

最后,您通常不需要特定版本的库;你只是关心这个问题。您通常至少需要某个给定的版本(或更高版本),因为它定义了您关心的API:如果您的程序使用3.14,那么它很可能是可构建的,并且可以与GTK 3.16一起运行(因为它们的API是兼容的)


<>你可以切换到更现代的语言,对C(甚至C++)有更好的支持,它们可能出现在C++的未来版本,也许是C++ 17中。例如,它有真正的一级模块和functor,还有(特定于Ocaml的)包管理器。

您可以使用
-M
gcc
的相关标志让
Makefile
自动生成依赖项;因此,如果外部包含的文件已更改,则将完成构建

你可能对我感兴趣。它将检测某些依赖项,但不会提取它们。我也能帮上忙

关于提取依赖项,这是特定于操作系统的,并且与。因此,在Debian或Ubuntu(使用
aptitude
和软件包)和Fedora(使用
yum
和软件包)上是不同的

看起来您需要一个通用的包管理器,但是没有每个Linux发行版都有自己的包管理(我听说Window或MacOSX有几个或没有,这取决于您如何计算它们)

顺便说一句,包的管理是系统管理员的工作。他当然不希望这是完全自动的(因为包管理器可以检测特定于他的计算机的一些冲突)

最后,您通常不需要特定版本的库;你只是关心这个问题。您通常至少需要某个给定的版本(或更高版本),因为它定义了您关心的API:如果您的程序使用3.14,那么它很可能是可构建的,并且可以与GTK 3.16一起运行(因为它们的API是兼容的)


<>你可以切换到更现代的语言,对C(甚至C++)有更好的支持,它们可能出现在C++的未来版本,也许是C++ 17中。例如,它有真正的一级模块和functor,还有(特定于Ocaml的)包管理器。

您可以使用
-M
gcc
的相关标志让
Makefile
自动生成依赖项;因此,如果外部包含的文件已更改,则将完成构建

你可能对我感兴趣。它将检测某些依赖项,但不会提取它们。我也能帮上忙

关于提取依赖项,这是特定于操作系统的,并且与。因此,在Debian或Ubuntu(使用
aptitude
和软件包)和Fedora(使用
yum
和软件包)上是不同的

看起来您需要一个通用的包管理器,但是没有每个Linux发行版都有自己的包管理(我听说Window或MacOSX有几个或没有,这取决于您如何计算它们)

顺便说一句,包的管理是系统管理员的工作。他当然不希望这是完全自动的(因为包管理器可以检测特定于他的计算机的一些冲突)

最后,您通常不需要特定版本的库;你只是关心这个问题。您通常至少需要某个给定的版本(或更高版本),因为它定义了您关心的API:如果您的程序使用3.14,那么它很可能是可构建的,并且可以与GTK 3.16一起运行(因为它们的API是兼容的)


<>你可以切换到更现代的语言,对C(甚至C++)有更好的支持,它们可能出现在C++的未来版本,也许是C++ 17中。例如,它有真正的一级模块和functor,还有(特定于Ocaml的)包管理器。

您可以使用
-M
gcc
的相关标志让
Makefile
自动生成依赖项;因此,如果外部包含的文件已更改,则将完成构建

你可能对我感兴趣。它将检测某些依赖项,但不会提取它们。我也能帮上忙

关于提取依赖项,这是特定于操作系统的,并且与。所以它是不同的