可执行程序
判断某个可执行程序是否存在
不推荐做法: 根据硬编码路径判断某个文件是否存在。比如判断 QFile().exists(/usr/bin/Foo)
。
推荐做法:根据 PATH 寻找可执行文件, 一般不需要自行读取 PATH,比如 QT 可以使用:
Exist = !QStandardPaths::findExecutable("Foo").isEmpty();
比如 glib 可以使用 find_program_in_path。
修改示例:
执行某个可执行程序
同样,推荐用 PATH 寻找,尽量不使用绝对路径。
Qt 的 QProcess 会自动处理 PATH 环境变量,因此 QProcess::execute("/usr/bin/touch", QStringList() << sessionCacheFile)
可以直接改成
QProcess::execute("touch", QStringList() << sessionCacheFile)
。
修改示例:
动态库路径
尽量不要硬编码 /urs/lib
qt 应用可以使用 QLibraryInfo::location(QLibraryInfo::LibrariesPath)
头文件
绝对不要有 #include </usr/include/xxx.h>
这种代码,c/c++ 头文件会自动在 /usr/include 里寻找,直接使用 #include <xxx.h>
。
此外,如果库提供了 pkg-config 文件,提供的 -I 参数会指定头文件位置,如果提供 Config.cmake (cmake用)文件,一般会提供 Foo_INCLUDE_DIR 变量,如果提供 .pri (qmake 用)文件,由 QT.foo.includes 提供头文件位置。xxx.h
是相对提供的路径寻找。