平台:ubuntu 14.04
cmake
gflags安装
git clone https://github.com/gflags/gflags.git
移动到某一文件夹下,用
mkdir build && cd build cmake ../ make && sudo make install\
可以安装gflags
测试
- 新建文件夹,在里面新建
test.cpp
和CMakeList.txt
test.cpp内容:
#include <iostream> #include <gflags/gflags.h> using namespace std; DEFINE_string(languages, "english,french,german","comma-separated list of languages to offer in the 'lang' menu"); int main(int argc, char *argv[]) { google::ParseCommandLineFlags(&argc, &argv, true); cout << FLAGS_languages << endl; return 0; }
CMakeList.txt内容:
cmake_minimum_required(VERSION 2.8) PROJECT (TEST) SET(SRC_LIST test.cpp) find_package(gflags REQUIRED) ADD_EXECUTABLE(test ${SRC_LIST}) target_link_libraries(test gflags)
进入当前文件夹,运行以下命令
mkdir build && cd build cmake ../ && make
运行
./test
,会发现,终端里输出的是english,french,german
运行
./test -languages="chinese"
,会发现输出的是chinese
当参数特别多的时候,支持从文件导入参数,下面是文件的格式:
--variablename=whatyoudefine
比如下面的文件
paras.txt
--bTest=true --int32Test=10 --int64Test=32768
导入文件参数的时候直接用
./test --flagfile=paras.txt
即可导入的文件参数也可以和命令行参数赋值直接配合使用,后面的会覆盖前面的初值
如下面./test int32Test=199 --flagfile=paras.txt
paras.txt
中int32Test
的初值会覆盖前面的199的赋值
问题
如果在
cmake
时的时候找不到gflags
,则不能用find_package
来查找gflags
,需要用include("cmake/FindGFlags.cmake")
来搜索gflags
FindGFlags.cmake
文件内容在:https://ceres-solver.googlesource.com/ceres-solver/+/master/cmake/FindGflags.cmake
CMakeLists.txt
具体内容可以参考该链接:http://blog.csdn.net/xizero00/article/details/50975156