首先代码中定义了使用宏的模块:
在任何位置都可以使用宏
#ifndef UNIT_TEST
if(m_stop) {
break;
}
std::cout << "thread is going on." << std::endl;
int sz = read(cmd, maxSz);
assert(("sz can't less than 0", sz >= 0));
if(sz > 0) {
BackendMessageProcessor::getInstance()->processMessage(cmd, sz);
//m_stop = true;
continue;
}
else{
std::cout << "no msg is recvd" << std::endl;
continue;
}
#else
std::cout << "use macro to test." << std::endl;
read(cmd, maxSz);
write(data_backtoCsdaq, sz_databack);
break;
#endif
然后想要用cmake使用宏的话,CMakeLists中预定义:
IF(UNIT_TEST)
ADD_DEFINITIONS(-DUNIT_TEST)
ENDIF(UNIT_TEST)
然后在终端界面下输入命令:
mkdir build
cd build
cmake -D UNIT_TEST=1 ..
即可得到宏模块内的输出结果。
以上。