小编seb*_*ian的帖子

CMake:target_link_libraries包含为SYSTEM,以禁止编译器警告

为了禁止源于我在应用程序中使用的库的编译器警告,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的将它作为一个系统库。

cmake

9
推荐指数
2
解决办法
690
查看次数

使用 std::chrono 的 C++ RFC3339 时间戳(以毫秒为单位)

我正在 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到达那里似乎有点麻烦。或者关于如何做到这一点更惯用的任何其他评论?

c++ std rfc3339 c++-chrono

6
推荐指数
1
解决办法
4064
查看次数

在android-studio/gradle中添加全局库的正确方法

首先,我知道如何在文件中添加一个本地库,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文件进行符号链接的想法;))

android gradle android-studio

4
推荐指数
1
解决办法
8300
查看次数

标签 统计

android ×1

android-studio ×1

c++ ×1

c++-chrono ×1

cmake ×1

gradle ×1

rfc3339 ×1

std ×1