小编flu*_*ffy的帖子

基于图书馆存在有条件地建立目标

我有一个大型的跨平台项目,需要在不同的地方建设; 在某些地方,可能有不同的UI工具包,声音API等,我试图找出自动配置哪些目标根据哪些库存在进行配置的最佳方法.

我正在尝试的代码是,例如:

find_library(PC_EGL EGL)
find_library(PC_GLESv2 GLESv2)
find_library(PC_Xxf86vm Xxf86vm)
if (DEFINED PC_EGL AND DEFINED PC_GLESv2 AND DEFINED PC_Xxf86vm)
  add_executable(foo foo.cpp)
  target_link_libraries(foo ${PC_EGL} ${PC_GLESv2} ${PC_Xxf86vm})
endif()
Run Code Online (Sandbox Code Playgroud)

但是,如果我在没有libGLESv2的系统上构建它,我会收到错误:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
PC_GLESv2
    linked by target "foo" in directory /path/to/platform
Run Code Online (Sandbox Code Playgroud)

find_library文档暗示变量PC_EGL_NOTFOUND应该被设置,但它不是(CMake 2.8.5).那么,使用find_library确定目标是否应该存在的适当方法是什么?好像在用

if (NOT PC_EGL MATCH "-NOTFOUND")
Run Code Online (Sandbox Code Playgroud)

有点脆弱和繁琐,所以有没有一个更好的机制来确定一个基本上找到一个库的CMake命令路径?

build cmake

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

JNI中C++ istream/ostream与Java InputStream/OutputStream的连接

InputStream是否有任何现有的 C++/JNI 库可以完成 Java和 C++istream以及 JavaOutputStream和 C++之间的编组访问工作ostream?特别是,我希望 Java 应用程序能够将 anInputStream或 an传递到用作其流接口的OutputStreamC++ 库中。iostreams

如果不存在现有库,为了支持此功能,我需要在istream/实现中实现的最低功能是什么?ostream更糟糕的是,我还需要支持seektell,尽管原则上我应该能够使用markresetskip来做我需要的事情。

由于这些流可能非常大,我不想简单地将它们加载到 a 中ByteArray,然后将其变成 astringstream等。

c++ java java-native-interface iostream

5
推荐指数
1
解决办法
3151
查看次数

将字符串解析为 Python 参数列表

概括

我想将表示 Python 参数列表的字符串解析为可以转发给函数调用的形式。

详细版

我正在构建一个应用程序,我希望能够从文本字符串中解析出参数列表,然后将其转换为*args,**kwargs模式以转发到实际方法。例如,如果我的文本字符串是:

"hello",42,helper="Larry, the \"wise\""
Run Code Online (Sandbox Code Playgroud)

解析的结果将类似于:

args=['hello',42]
kwargs={'helper': 'Larry, the "wise"'}
Run Code Online (Sandbox Code Playgroud)

我知道 Python 的ast模块,但它似乎只提供了一种解析整个语句的机制。我可以通过在它周围发表声明来伪造它,例如

ast.parse('f("hello",42,helper="Larry, the \"wise\"")'
Run Code Online (Sandbox Code Playgroud)

然后将相关字段从Call节点中拉出,但这似乎是一个非常多的迂回工作。

有没有办法从 Python AST 中只解析一种已知的节点类型,或者是否有更简单的方法来获得此功能?

如果有帮助,我只需要能够支持数字和字符串参数,尽管字符串需要支持嵌入式逗号和转义引号等。

如果存在用于在 Python 中构建词法分析器和解析器的现有模块,我也可以定义自己的 AST,但显然我更愿意只使用已经存在且经过正确测试等的功能。

注意:很多答案都集中在如何存储解析结果上,但这不是我关心的;这是我试图解决的解析本身,理想情况下不需要自己编写整个解析器引擎。

此外,我的应用程序已经在使用Jinja,它在自己的模板解析器中有一个 Python-ish 表达式的解析器,尽管我不清楚如何使用它来解析这样的一个子表达式。(不幸的是,这不是进入模板的东西,而是进入自定义 Markdown 过滤器,我希望语法尽可能匹配其匹配的 Jinja 模板函数。)

python parsing

5
推荐指数
1
解决办法
2717
查看次数

查找 scipy.spatial.Delaunay python 中一个点属于其中的所有单纯形

无论如何,是否可以使用 Delaunay 三角剖分中的某个点来获取所有单纯形/三角形scipy.spatial.Delaunay

我知道有一个find_simplex()函数,它只返回一个点所属的 1 个三角形,但我想获取它所属的所有三角形。

例子

所以在这个例子中,当我find_simplex()对点 6 执行操作时,它只返回三角形 2,但我希望它返回三角形 1、2、3、4、10 和 9,因为点 6 是所有这些三角形的一部分三角形。

任何帮助,将不胜感激!

python graph-theory delaunay discrete-mathematics scipy

5
推荐指数
1
解决办法
2200
查看次数

如何从JNI中捕获的Java异常中获取消息

我试图捕获Java抛出的异常并将异常消息报告给我自己的日志框架.但是,如果我这样做,就会出现明显的鸡蛋问题; 我正在尝试使用Java getMessage()调用获取消息:

jthrowable e = env->ExceptionOccurred();
jclass clazz = env->GetObjectClass(e);
jmethodID getMessage = env->GetMethodID(clazz,
                                        "getMessage",
                                        "()Ljava/lang/String;");
Run Code Online (Sandbox Code Playgroud)

但我实际上无法解析getMessage,因为挂起的异常导致JVM在我调用时中止GetObjectClass.

是否有一种安全的方法可以预先获得jmethodID所有例外情况?如果我只是Throwable.getMessage()在应用程序启动时获取方法ID ,那么它是否jmethodID可以移植到其他类?或者是适当的方法来调用env->ExceptionClear()并继续使用相同的本地jthrowable引用?

java java-native-interface

3
推荐指数
1
解决办法
1633
查看次数

Markdown子列表位于项目符号点的中间而不是结尾

以下HTML的Markdown等同于什么?

    <ul><li>Here is a bullet point</li>
    <li>Here is another bullet point; it has sub-points:
        <ul><li>subpoint 1</li>
        <li>subpoint 2</li>
        <li>subpoint 3</li></ul>
    but then continues with the original bullet point</li>
    <li>and here's one more point just to drive it home</li>
    </ul>
Run Code Online (Sandbox Code Playgroud)

我似乎无法让“ ...但是然后继续...”位保留在封装子列表的同一项目符号中。我已经尝试了几种方法:

* Here is a bullet point
* Here is another bullet point; it has sub-points:
    * subpoint 1
    * subpoint 2
    * subpoint 3
  but then continues with the original bullet point
* and here's one more point just …
Run Code Online (Sandbox Code Playgroud)

markdown

3
推荐指数
1
解决办法
698
查看次数

将原始 HTML 插入 Markdown

我需要将原始 HTML 插入到 Markdown 文档中,以便逐字放置在输出中;具体来说,我试图确保文档的某些部分包含在容器中(例如<div><aside>、 或<section>),而不会破坏其中内容的格式。

但是,如果我采用以下明显的方法:

<aside>

## My heading
Some text, some text, some more text.

</aside>
Run Code Online (Sandbox Code Playgroud)

然后 Markdown 处理器生成这个无效的 HTML:

<aside>

## My heading
Some text, some text, some more text.

</aside>
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将添加的标签放在要处理的文本上,例如

<aside>
## My heading
Some text, some text, some more text.
</aside>
Run Code Online (Sandbox Code Playgroud)

然后根据格式化的实际内容会发生一些不同的事情,但没有一个是正确的 -无论如何<aside>仍然被包裹<p>

如果我使用<div>,则所有内容都呈现为纯文本。

有没有办法指示 Markdown 处理器逐字处理输入文本,而不进行任何处理?

我目前正在使用 Hoedown(通过Misaka),它支持许多现代 Markdown 扩展,但如果有更现代的 Markdown 引擎可以更好地处理这个问题,我肯定会考虑切换到它。

markdown

2
推荐指数
1
解决办法
4713
查看次数

如何按名称设置 Python 对象的字段/成员

我正在做一个简单的对象编组事情,它在一个简单的 RESTful API 和一个 peewee 管理的数据存储之间移动。但是,这种模式不断出现(form作为 的输出cgi.FieldStorage()):

if form.getfirst('From'): msg.msg_from=form.getfirst('From')
if form.getfirst('To'): msg.msg_to=form.getfirst('To')
if form.getfirst('Body'): msg.msg_body=form.getfirst('Body')
Run Code Online (Sandbox Code Playgroud)

当然,这很笨拙且难以维护。我更愿意做的是这样的事情:

keyMapping = { 'From': 'msg_from',
               'To': 'msg_to',
               'Body': 'msg_body' }
for k, v in keyMapping:
    if form.getfirst(k): msg.SET_FIELD_VALUE(v, form.getfirst(k))
Run Code Online (Sandbox Code Playgroud)

显然这是我找不到的 SET_FIELD_VALUE 。我知道如何使用它,eval但显然我宁愿避免这种情况,而且我意识到实际模式实际上可能涉及某种形式的字段引用或反射 API 等,但我无法找到任何关于人们将如何做到这一点。

python reflection peewee

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