我有一个项目有一些要求,其中之一是设置 c++11 编译器/链接器标志:
果酱根.jam:
project
: requirements
<toolset>clang:<cxxflags>"-stdlib=libc++ -std=c++11"
<toolset>clang:<linkflags>"-lc++"
# ... etc
;
lib mylibrary
: #sources
[ glob source/*.cpp ]
/boost/filesystem
/boost/system
/boost/thread//boost_thread
;
特定于库的源代码正在使用必要的 c++11 标志进行编译,但是提到的 Boost 库没有。这导致二进制不兼容和链接器错误永无止境。
我不想cxxflags
在用户配置或命令行中明确指定。我想确保 jamroot/jamfiles 是正确构建项目所必需的。
如何将所需cxxflags
的内容“传递”给依赖的 Boost 库?
更新:我最近尝试使用 analias
来实现我的目标。从文档:
别名规则的另一个用途是更改构建属性。例如,如果您想使用静态链接到 Boost Threads 库,您可以编写以下代码:
alias threads : /boost/thread//boost_thread : <link>static ;
然而,设置它boost_filesystem
并重建,比如说,path.cpp
仍然省略了我试图构建的属性。