我有一个用C++编写的库,但没有使用stdc++库,因为它在某些平台上不可用。但是,我的libsmartrest.la中仍然有stdc++库依赖项,这使得依赖于该库的所有库都无法链接。这是我的configure.ac和Makefile.am:#Processthisfilewithautoreconftoproduceaconfigurescript.#Seehttp://www.openismus.com/documents/linux/building_libraries/building_librariesforintroduction.AC_INIT([CumulocitySm
我想将cpplint.py(https://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py)添加到基于autotools的项目中。有谁知道这样做的正确方法吗? 最佳答案 假设您希望在所有.cpp源文件上运行linter作为make的一部分。我们还假设linter在您的路径中,并且您没有将它的拷贝作为包的一部分分发。首先检查以确保您在configure.ac中有可用的linter:AC_PATH_PROG([CPPLINT],[cpplint.py],[tru
首先我只想说,我是Autotools的新手。我有一个具有以下结构的项目:+-src+-commandsMakefile.am+-copyMakefile.amcopy.hcopy.cpp+-deleteMakefile.amdelete.hdelete.cppmain.cppMakefile.amMakefile.amMakefile.am有SUBDIRS=srcsrc/Makefile.am有SUBDIRS=commands。src/commands/Makefile.am有SUBDIRS=$(AUTODIRS)当我在根目录下运行automake时,它会生成Makefile.in
在过去的几天里,我一直在研究使用autotools来构建我的项目,而不是我在过去几个月中拼凑的Makefile。不幸的是,我还没有找到一个例子让我对我的项目结构目前的情况有足够的了解。我的项目的应用程序代码中包含三个库。我正在寻找使用单个配置脚本来制作(和安装)应用程序和库的最佳方法。 最佳答案 抱歉跑题了。我现在做了类似的事情,但我可以在Autotools和CMake之间进行选择。我很高兴选择了第二个。可能值得一看,包括CDash、CTest和CPack。http://www.cmake.org/最好的问候,奥瓦内斯
我有一个使用automake和autoconf的C++项目。我对这两个都不熟悉。我的主目录是网络安装的——在我们拥有的每台服务器上都是一样的——我想在不同的机器上同时编译和运行项目(及其可执行文件)。我们的服务器通常采用不同的架构。我的桌面是32位的,但是服务器是64位的等等。我在configure.ac和Makefile.am中使用什么选项来编译以机器架构命名的单独目录中的目标文件?在常规Makefile中执行此操作相对简单,但我不知道如何设置autotools。 最佳答案 如果你在你的configure.ac和Makefile.
我有一个适度的C++项目。我正在尝试为此使用autotools,但发现它非常复杂。关于何时使用自动工具以及何时可以不用它的准则是什么?什么是(简单的)替代方案?我想使用autotools的主要原因是它完整的makeinstall支持。有更简单的选择吗?理想情况下,我想要EclipseCDT支持的东西。 最佳答案 对于makeinstall支持,您只需要automake。一个简单的Makefile.am文件很容易制作:LIBS+=-lsome-lib-lsome_other_libbin_PROGRAMS=hellonoinst_HE
我在CMake项目中重用autotools项目的一些C/C++源文件,我看到许多源文件散落着如下行:#ifdefHAVE_UNISTD_H#include//forgetpid()#endif如果getpid()是可选的并且它的调用被等效的HAVE_UNISTD_H指令包围,我会理解这个构造的目的。但是,如果没有HAVE_UNISTD_H,源文件不会编译,并提示getpid()未定义。这感觉比编译器让我知道未找到unistd.h要神秘得多。当然,这只是一个例子。其他流行的宏包括HAVE_STDINT_H、HAVE_INTTYPES_H等,它们的存在是编译源文件所必需的。为什么要包含HA
我正在开发一个程序,该程序使用autotools作为其构建系统并在Linux上编译良好。为了为windows构建,我试图让mingw交叉编译器为windows工作。现在,当我在linux上编译并移动到windows时,我当然会丢失一些默认情况下未安装在windows上的dll。这会导致缺少dll错误。由于LGPL的限制,我无法静态链接我的程序。所以我的问题是在这种情况下交叉编译的正确方法是什么?我觉得我需要将我的exe包装在一个安装程序中,该安装程序会自动解析并安装Windows的dll依赖项,但我无法找到解释如何执行此操作的内容。基本上我在考虑yum/apt-getforwindow
我正在尝试为bson-cpp项目运行autotools配置脚本,但它失败了,因为它无法确定使用boost_filesystem编译需要哪些标志。快速查看confg.log显示:g++-oconftest-g-O2-pthread-L/usr/local/lib-R/usr/local/lib-L/usr/local/libexecconftest.o-lboost_filesystem-mt-lboost_system-mt>&5g++:error:unrecognizedoption'-R'因此,很自然地,我试图找出R选项的作用,但我似乎无法在任何地方找到它的文档。我检查过here和
这个想法是一个项目有一个文件,其中包含__DATE__和__TIME__。在不明确更改其修改日期的情况下重新编译它可能会很酷。编辑:$(shelltouch-c..)如果笨拙的话可能是一个很好的解决方案。 最佳答案 标准的习惯用法是让目标文件(不是源文件!)依赖于一个不存在且没有规则或依赖性的目标(这个目标通常称为FORCE),就像这样always-recompile.o:FORCEFORCE:不过,如果以某种方式创建了一个名为“FORCE”的文件,这将会中断。使用GNUmake,您可以改为使用特殊目标.PHONY,它没有此限制,但