2012-07-22 105 views
2
src 
    |--Manager.cpp 
    |--Specializations 
    | |--Manager.cpp 

建设这个Boost.Build来源试图创建Boost构建 - 具有相同名称

/bin/... 
    |--Manager.o 
    |--Manager.o 

但失败。如何自动解决这个问题?我读FAQ item,但我不喜欢这个解决方案,因为当我有一个相同的类名,但名称空间不同时,我必须手动修复这些问题。是否有可能使Boost.Build自动将前缀目标文件名称与目录?

/bin/... 
    |--Manager.o 
    |--Specializations.Manager.o 

还是复制源目录树?

/bin/... 
    |--Manager.o 
    |--Specializations 
    | |--Manager.o 
+0

我有一个非常类似的问题:在一个项目的源代码与可执行目标名称相同的目录中,boost b2默认尝试创建可执行文件的位置与,目录树与目标文件中。这是一个真正的痛苦,我没有一个解决方案(除了重命名目标,这导致其他问题)...例如bin/gcc-4.4.7/release/threading-multi包含source-dir-name,因此可以构建具有相同名称的目标名称。 – fig 2014-01-15 14:01:00

+0

@fig在我看来,从boost中获得的版本与从boost版本官方网页中获得的版本完全不同。例如boost版本的“boost”版本现在对我来说根本不起作用,而boost版本的boost版本仍然正常工作。后者也创建一个合适的目录树。转到http://www.boost.org/boost-build2/并从那里尝试版本。你可以很容易地将它嵌入到你的项目中(我们有这样的)。如果它不起作用,请在这里通知我。 – 2014-01-16 11:28:38

回答

1

这种行为很久以前已经改变,应该只是工作。 Boost.Build现在模仿源结构,即您应该同时获得bin/Manager.obin/Specializations/Manager.o

+0

这真的让我感到惊讶。如你所描述的,它可以在CentOS上运行,但在我的Arch Linux上却不行。我刚刚尝试了Debian - 按照你的描述工作。看来Arch有什么问题... – 2013-07-17 15:33:05