c++ - 如何在编译时门功能?

标签 c++ cmake makefile

我有一个正在开发的 C++ 应用程序。我想发布一个免费版本和一个付费版本,生产版本在现有免费版本的基础上添加功能。

根据发布类型编译功能的最佳方法是什么?理想情况下,我会向 CMake 传递一个标志,这样在构建二进制文件时它也会包含我在生产版本中需要的任何代码。

最佳答案

您自己回答了您的问题 :) 将一个标志传递给您的编译器,并在您的代码门中将功能传递给:

#ifdef YOUR_FLAG
//your extra logic
#elif
//in case YOUR_FLAG is not defined
#endif

我在我开发的游戏中使用了完全相同的方法——在免费版本中启用广告,在付费版本中代码被预处理器排除。

您还可以使用运行时检查,以防它更适合某些特定任务,但正如问题评论中提到的那样 - 代码在那里并且篡改内存(翻转你的标志)将可能允许访问受限制的功能。

关于c++ - 如何在编译时门功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28345013/

相关文章:

cmake - CMake将字符串解释为变量

c++ - CMake:从 ExternalProject 链接共享 C++ 对象生成具有相对路径而非绝对路径的二进制文件

c++ - 如何用gcc创建和使用自定义共享库?

c - Makefile:没有制定目标的规则

c++ - 带有 Qt5 : No rule to make target 的 Netbeans

c++ - 指向函数需要的指针;定义后

c++ - 使用 `pkg-config...` 的 g++ 编译器选项会导致 -I(directory) -I 是什么意思?

c++ - 在 gitlab CI/CD 中使用 devtoolset

c++ - OpenSSL:HTTPS 代理

windows - cmake 在 Windows 上查找 sqlite3 库