CMake 使用库预加载每个测试

woo*_*luk 1 linux cmake ctest

在我们的 Linux 应用程序中,我们使用一个预先加载了LD_PRELOAD.

我想为每个测试预加载相同的库。我们使用 CMake 作为构建工具。

我可以告诉 CMake 它应该LD_PRELOAD为每个执行的测试添加到环境中吗?

测试使用make test.

Com*_*sMS 5

假设您用于add_test注册单个测试,实现此目的的最可靠方法是使用test properties。该ENVIRONMENT属性允许您指定为运行测试而设置的任意环境变量:

add_test(NAME some_test COMMAND some_test_target)
add_test(NAME some_other_test COMMAND other_test_target)

set_property(TEST some_test some_other_test
   PROPERTY
   ENVIRONMENT LD_PRELOAD=/path/to/preload.so)
Run Code Online (Sandbox Code Playgroud)

您还可能希望使用生成器表达式对属性进行转义,以保持测试可移植到不支持LD_PRELOAD.