我正在尝试在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) 我想在 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 库相关的链接错误。