繁体   English   中英

如何在C ++预处理程序定义中获取CMake可执行文件名称

[英]How to get CMake executable name in C++ preprocessor definition

我的CMake文件中有两个可执行文件定义

add_executable(ProjectFoo ...)
add_executable(ProjectFoo_UnitTests ...)

有没有办法在C ++代码中获取可执行文件的名称(ProjectFoo或ProjectFoo_UnitTests),如下所示? 语法可能不正确,但我希望它可以阐明意图。

#if executable_name == ProjectFoo
...

如果您只想在运行时知道正在运行的可执行文件是否是单元测试配置,则将专用的预处理器定义传递给您的单元测试可执行文件:

target_compile_definitions(ProjectFoo_UnitTests IS_UNIT_TEST)

并在您的C ++代码中检查以下定义:

#if defined (IS_UNIT_TEST)
# include "some_mock.hpp"
#endif

您可以使用自己的宏定义“运送”每个可执行文件。 您可以在该宏中存储可执行文件的名称:

target_compile_definitions(ProjectFoo executable_name=ProjectFoo)
target_compile_definitions(ProjectFoo_UnitTests executable_name=ProjectFoo_UnitTests)

在代码里面, executable_name可用于提取可执行文件的名称:

#if executable_name==ProjectFoo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM