我使用的是64位系统但需要一组32位二进制文件.我必须将哪些选项传递给configure脚本才能生成32位/ x86 makefile?
因此,关于Autotools与CMake的主题似乎有很多写作,但对于我的生活,我似乎无法找到关于如何将项目从Autotools转换为CMake的好教程.有人知道吗?
我是autotools的新手,我正在研究一个C项目.我想将我的项目添加到git存储库.我需要在我的版本控制系统中跟踪哪些文件由autotools生成,哪些文件应该被忽略?
有人建议一个人如何开始使用autotools来构建C项目?
什么是点aclocal会脚本和aclocal.m4文件,在使用自动工具来配置源文件的情况下?从我读到的,aclocal扫描宏文件的宏以后由automake使用.我不深入理解这个过程,但似乎扫描功能可能刚刚嵌入到automake中.
我一直在寻找Autotools和CMake的优点和缺点.但我想知道那些使用这些工具中的一个(或两个)的人的意见.
我基本上在一年前使用过Autotools,我知道其中一个优点是它依赖于shell脚本,因此不需要安装它来运行并使用可移植的shell脚本.但它看起来过于面向unix,并且无法在Windows上运行配置文件.
我现在要为开源项目选择一个构建系统工具,必须至少为Linux和Windows编译.它是用C++编写的,并使用Qt GUI前端,其余部分是"通用的".
谢谢你的帮助.
我试图在我的mac上从源代码构建libxml2.
所以我使用mac ports安装了autoconf libtool和automake
autoconf和automake似乎正如预期的那样正常工作.
我首先尝试运行autogen.sh.
不幸的是,libtoolize --version给出了
-bash: libtoolize: command not found
Run Code Online (Sandbox Code Playgroud)
我尝试跑步(再次)
sudo port install libtool
---> Cleaning libtool
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.
Run Code Online (Sandbox Code Playgroud)
我试试
locate libtool
Run Code Online (Sandbox Code Playgroud)
它似乎安装得很好
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man1/libtool.1
/Applications/Xcode.app/Contents/Developer/usr/bin/libtool
/Applications/Xcode.app/Contents/Developer/usr/share/man/man1/libtool.1
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/cross/mipsel-linux-binutils/files/110-uclibc-libtool-conf.patch
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool/Portfile
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool/files
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool/files/ltmain.m4sh-allow-clang-stdlib.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool-devel
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool-devel/Portfile
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/openslp/files/libtool-tags.patch
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/t1lib/files/patch-libtool-tag.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/print/pdflib/files/patch-libtool.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/security/steghide/files/libtool-tag.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/www/apache2/files/libtool-tag.diff
/usr/bin/libtool
/usr/lib/php/build/libtool.m4
/usr/share/apr-1/build-1/libtool
/usr/share/man/man1/libtool.1
Run Code Online (Sandbox Code Playgroud)
我如何让libtoolize工作?
这是我对cmake的第一次尝试,如果可能的话,我希望有一些关于我做了什么的反馈,因为一些问题仍然存在.
在库文件夹的CMakeLists.txt中,我创建了两个makefile目标:configure-antlr3c和antlr3c.第一个目标运行autotools配置shell脚本,第二个目标运行make可执行文件来构建库:
# CMakeLists.txt in libantlr3c-3.1.3
add_custom_target(
configure-antlr3c
${SHELL_EXECUTABLE} configure
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(
antlr3c
${MAKE}
DEPENDS configure-antlr3c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
Run Code Online (Sandbox Code Playgroud)
主要问题是configure-antlr3c目标总是"过时",因此即使没有发生任何变化也会始终执行.此外,我一定需要在一个单独的目录中生成我的cmake makefile(不在我的项目的根目录中),以避免覆盖库的autotools Makefile ...
有谁有这个问题(用cmake构建autotools项目)?如果是这样,你的解决方案是什么?
谢谢.
编辑:解决方案 在根CMakeLists.txt中:
include(ExternalProject)
ExternalProject_Add(
libantlr3c
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
BUILD_COMMAND make
BUILD_IN_SOURCE 1
)
Run Code Online (Sandbox Code Playgroud)