首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于CMake配置向CLI添加选项

基于CMake配置向CLI添加选项
EN

Stack Overflow用户
提问于 2022-10-19 10:57:57
回答 1查看 34关注 0票数 0

我编写了一个程序prg,它可以使用bash使用下面的一些子命令运行

代码语言:javascript
复制
$ prg subcommand1
Output of subcomman1
$ prg subcommand2
Output of subcomman2

程序用C++11编写,用CMake (3.10+)编译。

现在,我想添加另一个可选的命令,比如optional_subcommand。可选的--在某种意义上,用户可以在配置Cake时决定是否使用它编译程序。为了澄清的是,当代码是而不是optional_subcommand支持的编译optional_subcommand时,输出应该是这样的。

代码语言:javascript
复制
$ prg optional_subcommand
Option not supported...

optional_subcommand需要安装外部库。因此,find_package(SomeLib REQUIRED)必须在某个阶段由CMake调用。optional_subcommand的代码需要这个库来编译。

我所能想到的就是为optional_subcommand编写一些虚拟代码,然后根据CMake的请求进行替换。我认为这可以通过要求CMake覆盖来实现,比方说,不管是虚拟的还是非虚拟的optional_subcommand.cpp

提出的解决方案是否明智,或者是否有更好的方法来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-19 11:26:58

如果需要,CMake可以定义一个预处理符号,并向目标添加额外的文件(在下面,prg):

代码语言:javascript
复制
if(SomeLib_FOUND)
  target_compile_definitions(prg PUBLIC HAVE_SOMELIB)
  target_sources(prg PRIVATE src/optional_subcommand.cpp)
endif()

然后,您可以将optional_subcommand的命令分派代码包装为#ifdef HAVE_SOMELIB

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74124172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档