我正在寻找一种合理的方法来测试基于C ++模板的软件,我想检查模板参数。如果参数不符合某些条件,我希望编译器发出错误。到目前为止一切都很好......
现在我想测试编译器确实撤销了无效的模板参数。我可以设置一个测试场景,并在构建系统(cmake)中尝试编译场景,但这听起来非常痛苦。我想我不是第一个试图解决这个问题的人。大约10年前,我使用了一种方法,我使用单个文件进行多次测试,并使用预处理器启用了单个测试。但那也不是很优雅。
有关如何解决此问题的任何建议(最好在我当前的工具集中:c ++,cmake,boost-test,bash,python)?
答案 0 :(得分:1)
CMake的try_compile
听起来像是一个合理的工具。
这里的主要问题是try_compile
将在CMake配置时运行,这不是进行测试的最佳时间。因此,我建议将测试的编译分离到自己的CMake项目中。
外部CMake项目将像以前一样构建您的代码,并包含一个在测试项目上运行CMake的自定义构建目标。这样您甚至可以将编译时测试包含在CTest套件中。
我实际上没有用CMake实现这样的任何东西,所以我不能保证它会按预期工作,更不用说这是最好的方法。但如果我不得不写这样一个系统,那可能就是我的开始。