首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动和自动通配符

自动和自动通配符
EN

Stack Overflow用户
提问于 2017-07-11 21:34:41
回答 1查看 537关注 0票数 0

我在Eclipse中有一个使用Autoconf和Automake的C++项目。我的(简化)项目结构如下:

代码语言:javascript
运行
复制
+-- Makefile.am
+-- configure.ac
+-- src/
|   +-- 4Bench.cpp
|   |   +-- Makefile.am
|   |   +-- folder1/
|   |   |   +-- ... 
|   |   +-- folder2/
|   |   |   +-- ...
|   |   +-- folder3/
|   |   |   +-- ...
+-- include/
|   +-- ...

文件夹src/将包含多个二进制文件(4Bench.cpp是其中之一),这些二进制文件将使用位于folder1、folder2等中的.cpp文件。我的src/makefil.am看起来如下:

代码语言:javascript
运行
复制
bin_PROGRAMS=4Bench
4Bench_SOURCES=4Bench.cpp folder1/file11.cpp folder2/file21.cpp ... 
4Bench_CPPFLAGS=-I$(top_srcdir)/include
AM_CPPFLAGS=$(BOOST_CPPFLAGS)
AM_LDFLAGS=$(BOOST_LDFLAGS)
4Bench_LDADD=$(BOOST_PROGRAM_OPTIONS_LIB)

由于我希望在src/的子文件夹中有许多文件,所以我希望使用通配符来实现这样的功能:

代码语言:javascript
运行
复制
4Bench_SOURCES=4Bench.cpp $(wildcard folder1/*.cpp) $(wildcard folder2/*.cpp) $(wildcard folder3/*.cpp)

不幸的是,这会导致表单“未定义引用”的大量错误,也就是说,编译器无法在.cpp文件中找到类的实现。枚举二进制文件所需的每个文件。为了进一步参考,我提供了./figre.ac和./Makefile.am文件。

./figre.ac

代码语言:javascript
运行
复制
AC_PREREQ(2.59)
AC_INIT(4Bench, 0.1)
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects -Wno-portability])
AC_PROG_CXX
AC_CONFIG_MACRO_DIR([m4])
AX_CXX_COMPILE_STDCXX_11
AX_BOOST_BASE([1.32],,[AC_MSG_ERROR([4Bench needs Boost, but it was not found in your system])])
AX_BOOST_PROGRAM_OPTIONS
AX_BOOST_UNIT_TEST_FRAMEWORK
AC_CONFIG_FILES(Makefile src/Makefile test/Makefile)
AC_OUTPUT

./Makefile.am

代码语言:javascript
运行
复制
SUBDIRS=src test
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4
EXTRA_DIST = bootstrap

关于如何解决这个问题,有什么想法吗?我使用Linux 18和g++ 5.4.0、autoconf 2.69和GNUAutomake1.15。感谢您的关注和帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-12 03:06:56

关于如何解决这个问题,有什么想法吗?

automake的当前实现中,您无法做到这一点。这是一个特性

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45044850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档