【发布时间】:2022-12-09 04:22:37
【问题描述】:
我们实现了一个记录器,它会自动打印出日志条目的项目名称以及其他信息。
我们最近将我们的构建系统从使用本机 Microsoft visual c++ 更改为生成的 cmake。
使用本机 Microsoft c++ 构建文件,我们只是在全局“.props”中定义一个宏“PROJECT_NAME”:<PreprocessorDefinitions>%(PreprocessorDefinitions);PROJECT_NAME=R"($(ProjectName))"</PreprocessorDefinitions>
但是,现在我们使用 CMake,我很难找到一种在编译时访问项目名称的好方法。我可以在编译时使用 configure_file 或 target_compile_definitions 访问 CMake 变量,但我不知道有任何变量持有带有目标名称的字符串。有这样的变量还是可以定义?
另外,是否可以只在一个地方定义?我不想在每个 CMakeList.txt 中复制粘贴一行这样的内容:target_compile_definitions(MYTARGET PRIVATE PROJECT_NAME="$mytarget_name")
【问题讨论】:
-
CMake 不会创建包含项目名称的自动宏。如果要为项目中的所有目标定义一个可用的宏,请使用 add_compile_definitions 命令。
标签: c++ visual-c++ cmake