小编Dav*_*zak的帖子

在CMake中添加自定义构建步骤

我正在尝试在CMake中添加一个生成一些文件的自定义构建步骤.我还没有找到它是如何工作的描述.

我有一个项目,其中必须由ODB for C++生成源文件,头文件和实现文件.ODB将类头作为参数,并生成我想在项目中使用的源文件.

现在我在我的CMakeLists.txt中有以下命令:

add_custom_command(TARGET ${PROJECT_NAME}
    PRE_BUILD
    COMMAND odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-    query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
    DEPENDS ${PROJECT_NAME}
    VERBATIM
)
Run Code Online (Sandbox Code Playgroud)

对于文件person.hppODB应该产生person-odb.hxx,person-odb.cxx,person-odb.ixx但我特地用CMake的命令不会产生任何东西.在终端中,此命令正常工作.

我究竟做错了什么?

编辑:问题可以通过添加以下行来解决:

set(FAKE_TARGET fakeTarget)
add_custom_target(fakeTarget
    odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
)
add_dependencies(${PROJECT_NAME} ${FAKE_TARGET})
Run Code Online (Sandbox Code Playgroud)

c++ build cmake custom-build-step c++11

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

在Python脚本中导入OpenEXR时出现未定义的符号

我想在 Python 脚本中加载 EXR 图像。因此我将其导入

import OpenEXR
Run Code Online (Sandbox Code Playgroud)

但不幸的是,当我用以下命令启动脚本时出现以下错误

ipython testscript.py
Run Code Online (Sandbox Code Playgroud)

错误信息

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
PATH_TO_SCRIPT/testscript.py in <module>()
      8 import numpy as np
      9 # import matplotlib.pyplot as plt
---> 10 import OpenEXR
     11 
     12 # import dts_input

ImportError: PATH_TO_SCRIPT/OpenEXR.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZTIN7Imf_2_27OStreamE
Run Code Online (Sandbox Code Playgroud)

我已经使用 Arch Linux 的包管理器安装了 OpenEXR,并在本地安装了 python 的绑定模块

pip install --target ./ openexr
Run Code Online (Sandbox Code Playgroud)

并且脚本文件夹中已安装了一个名为 OpenEXR.cpython-37m-x86_64-linux-gnu.so 的文件。

我不知道如何解决链接问题,因为它似乎是与 OpenEXR 自己的 imf 库相关的链接错误。

python linux linker-errors openexr

5
推荐指数
0
解决办法
776
查看次数

标签 统计

build ×1

c++ ×1

c++11 ×1

cmake ×1

custom-build-step ×1

linker-errors ×1

linux ×1

openexr ×1

python ×1