Gcc 使用多个编译器生成
当使用C++14/C++11特性和STL包含时,GCC和clang具有不同的行为。Libc++倾向于隐式包含内容,而libstdc++似乎倾向于要求显式包含。GCC-Wpedantic似乎比铿锵-Wpedantic更迂腐Gcc 使用多个编译器生成,gcc,makefile,clang,libstdc++,libc++,Gcc,Makefile,Clang,Libstdc++,Libc++,当使用C++14/C++11特性和STL包含时,GCC和clang具有不同的行为。Libc++倾向于隐式包含内容,而libstdc++似乎倾向于要求显式包含。GCC-Wpedantic似乎比铿锵-Wpedantic更迂腐 我想要的是有一个makefile,它尝试使用这两个编译器构建,以便捕获错误。最好的方法是什么?一般来说,make的工作只是使用一组特定的选项进行测试。测试多个配置是一些高级脚本的工作 首先,设置项目,使其可以进行树外构建。通常使用名为configure的脚本来执行此操作 然后,
我想要的是有一个makefile,它尝试使用这两个编译器构建,以便捕获错误。最好的方法是什么?一般来说,
make
的工作只是使用一组特定的选项进行测试。测试多个配置是一些高级脚本的工作
首先,设置项目,使其可以进行树外构建。通常使用名为configure
的脚本来执行此操作
然后,为每个配置创建一个树外构建:
pushd; mkdir build-gcc-libstdc++ && cd build-gcc-libstdc++ && ../configure CXX='g++'; popd
pushd; mkdir build-gcc-libc++ && cd build-gcc-libc++ && ../configure CXX='g++-libc++'; popd
pushd; mkdir build-clang-libstdc++ && cd build-clang-libstdc++ && ../configure CXX='clang++'; popd
pushd; mkdir build-clang-libc++ && cd build-clang-libc++ && ../configure CXX='clang++-libc++'; popd
(您可能还希望对多个gcc版本执行此操作,因为它们之间的标题也有很大差异)
要全部运行它们,请执行以下操作:
make -C build-gcc-libstdc++ [targets ...] &&
make -C build-gcc-libc++ [targets ...] &&
make -C build-clang-libstdc++ [targets ...] &&
make -C build-clang-libc++ [targets ...]
但通常我只是使用默认配置构建,并让travis捕获其他配置中的错误。请注意,我没有使用libc++:是什么阻止您创建在makefile中包含所有这些选项的目标?@CarlNorum Nothing(请记住使用
${MAKE}
而不是MAKE
),但它在大多数工作流中的用处非常有限。快速周转对于WIP构建最为重要,在提交时,如果键入makepoly
vs/makepoly.sh