为了禁止源于我在应用程序中使用的库的编译器警告,target_include_directories(myapp SYSTEM ...)在将它们添加为系统库之前,我手动将它们的目录包含为系统库,target_link_libraries如下所示:
add_executable(myapp myapp.cpp)
target_include_directories(myapp SYSTEM
PRIVATE "extern/lib/include"
)
target_link_libraries(myapp lib::lib)
Run Code Online (Sandbox Code Playgroud)
但是,这种感觉很难受,并且如果lib决定更改包含路径的开发人员也将中断。如果仅使用它就不会有问题,target_link_library但是,当然,它们是通过包含的,-I而我会再次从此包含得到编译器警告。
有没有更优雅,更安全的方式来做到这一点?如果这将是伟大target_link_libraries有一个SYSTEM选项来告诉cmake的将它作为一个系统库。
我正在 C++ 中创建一个RFC3339时间戳,包括毫秒和 UTC 格式,std::chrono如下所示:
#include <chrono>
#include <ctime>
#include <iomanip>
using namespace std;
using namespace std::chrono;
string now_rfc3339() {
const auto now = system_clock::now();
const auto millis = duration_cast<milliseconds>(now.time_since_epoch()).count() % 1000;
const auto c_now = system_clock::to_time_t(now);
stringstream ss;
ss << put_time(gmtime(&c_now), "%FT%T") <<
'.' << setfill('0') << setw(3) << millis << 'Z';
return ss.str();
}
// output like 2019-01-23T10:18:32.079Z
Run Code Online (Sandbox Code Playgroud)
(原谅s using)
有没有更直接的方法来获取毫秒数now?%1000以毫秒为单位now到达那里似乎有点麻烦。或者关于如何做到这一点更惯用的任何其他评论?
首先,我知道如何在文件中添加一个本地库,build.gradle这里已经讨论了几个问题(基本上都是一样的),请看这里,这里和这里.但是你必须对文件中的compile files('/path/to/lib.jar')语句中的路径进行硬编码build.gradle,这不是很好,不可再分发等,如果你使用的库不在项目的文件夹结构中.我更喜欢在同一个地方为我的所有项目维护这个库(因此它始终是所有项目的最新版本等).因此,我想知道如何使用gradle将一个库(通过Maven无法提供)添加到使用gradle的Android-Studio项目中,因为该库是作为AS首选项中的全局库添加的.
到目前为止我做了什么:
我使用Google的新Android-Studio,它使用gradle进行构建管理,以构建Xposed框架模块.为此,我必须包含一个外部库,XposedLibrary我从各自的Github存储库下载它以使其保持最新.
它包含jar XposedLibrary/XposedBridgeApi.jar,我在AS中添加为全局库(Ctrl + Shift + Alt + S - > Global Libraries - > green plus以添加文件夹XposedLibrary).编译失败,抱怨它不知道导入的类.所以我不得不手动将库添加到build.gradle文件中,在依赖项中添加相应的行,如下所示:
dependencies {
compile files('libs/android-support-v4.jar')
compile files('/home/sebastian/dev/android/XposedMods/XposedLibrary/XposedBridgeApi.jar')
}
Run Code Online (Sandbox Code Playgroud)
我试着添加compile files('XposedBridgeApi.jar')或compile files('XposedLibrary/XposedBridgeApi.jar')但是这不起作用.
那么,在不使用完整路径的情况下,将AS全局库添加到依赖项的好方法是什么?(我不喜欢从lib/文件夹中对jar文件进行符号链接的想法;))