【发布时间】:2018-01-28 18:02:57
【问题描述】:
为了以源代码向客户交付软件,我想删除封装在 #ifdef(#ifdef 或 #else 部分)中的代码。我想在通过目标属性调用 CMake 的 install() 期间执行此操作。使用get_target_property(),我可以获得已启用定义的列表,但我无法通过add_target_definition() 或set_target_property() 将undef'ed 宏添加到该列表中,这些宏稍后将从.c 文件中删除。我可以想象这种情况有可用的解决方案,但我无法在 SO 和 Google 上找到答案。
- 如何为任何
install()机制提供启用和禁用定义的列表? - 从任何目标
.c文件中删除禁用代码行的最佳方法是什么?
非常感谢任何帮助。
亲切的问候, 弗洛斯特罗特
【问题讨论】:
-
为什么?你想通过这个解决什么问题?如果客户尝试使用源代码时定义的宏不一样怎么办?
-
作为一个可能的解决方案,为什么不简单地向客户展示预处理代码呢?或者提出一种不强制您删除或预处理文件的设计,例如将代码拆分为更多文件,而不是将文件分发给不应拥有这些文件的客户?
标签: cmake