您使用哪些包来处理命令行选项、设置和配置文件?
我正在寻找从命令行和/或配置文件中读取用户定义选项的内容。
选项(设置)应该被划分成不同的组,这样我就可以在代码中将不同的(子集)选项传递给不同的对象。
我知道boost::program_options,但我不太习惯API。有轻量化的替代品吗?
(顺便说一句,您是否曾在代码中使用可以从任何地方读取的全局选项对象?或者你会认为这是邪恶的?)
发布于 2009-06-13 06:52:03
你不会喜欢我的答案的。我用boost::program_options。界面需要一些习惯,但一旦你放下它,它是惊人的。只需确保进行大量单元测试,因为如果语法错误,将获得运行时错误。
而且,是的,我将它们存储在一个单例对象(只读)中。我不认为在这种情况下是邪恶的。这是我能想到的少数几个单身人士可以接受的案例之一。
发布于 2009-06-13 07:49:21
在谷歌,我们使用旗子。它不做配置文件,但是对于标志,它比使用getopt少得多。
#include <gflags/gflags.h>
DEFINE_string(server, "foo", "What server to connect to");
int main(int argc, char* argv[]) {
google::ParseCommandLineFlags(&argc, &argv, true);
if (!server.empty()) {
Connect(server);
}
}您将DEFINE_foo放在需要知道标志值的文件的顶部。如果其他文件也需要知道值,则在其中使用DECLARE_foo。对于测试也有很好的支持,所以单元测试可以独立地设置不同的标志。
发布于 2009-06-15 01:49:07
对于命令行和C++,我一直是TCLAP的粉丝:模板化命令行参数分析器。
http://sourceforge.net/projects/tclap/
https://stackoverflow.com/questions/989980
复制相似问题