我有一个C++文件,它实现了一个基准测试,开头是这样的:
# ifdef YOMM2_BENCHMARK_HIERARCHIES
enum { NH = YOMM2_BENCHMARK_HIERARCHIES };
# else
enum { NH = 10 };
# endif
# ifdef YOMM2_BENCHMARK_OBJECTS
enum { OBJECTS = YOMM2_BENCHMARK_OBJECTS };
# else
enum { OBJECTS = 1000 };
# endif
我想用不同的NH
和NOBJECT
值编译(并运行)那个程序。是否可以在不重新生成构建系统(即重新运行cmake
)的情况下完成此操作?
我试过这样的事情:
touch tests/benchmarks.cpp ; CXXFLAGS="-DYOMM2_BENCHMARK_HIERARCHIES=3" make -C build/code/tests benchmarks
...但它不起作用(尽管它可能显示了我试图做的事情)。
1条答案
按热度按时间oknwwptz1#
可以使用以下命令设置每目标编译定义
这会将“-DYOMM2_BENCHMARK_OBJECTS”添加到该目标的编译命令行中。
https://cmake.org/cmake/help/latest/command/target_compile_definitions.html