gpt4 book ai didi

python - cmake、swig 和 python : How to override conflicting symbols

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:09 25 4
gpt4 key购买 nike

我正在使用 cmake 用 swig 创建一个 python 包装器。问题是,lapack 和 python 中存在冲突的符号。我有一个简单的脚本来在编译之前取消定义冲突的符号,并且我可以编写一个有效的 makefile。我想知道,使用 cmake 时最好的方法是什么。

这个 makefile 有效:

tools_wrap.cc toolspy: tools.i ../libtools.a
swig -I../ -c++ -python $(PYFLAGS) -shadow -o tools_wrap_tmp.cc tools.i
# A terrible hack to override conflicting function names in python and lapack
python ./fix_undefs.py < tools_wrap_tmp.cc > tools_wrap.cc

_tools.so: tools_wrap.cc ../libtools.a
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(PYTHONINC) $(INCLUDES) -I../ tools_wrap.cc $(LIBS) -o _tools.so

感谢您的帮助!

维萨

最佳答案

在研究了 cmake swig-generator 之后,我得到了以下解决方案:

add_custom_target(TmpCWrap mv ${swig_generated_file_fullname} tmp.cxx 
DEPENDS "${swig_generated_file_fullname}")

add_custom_target(FixDefs python ${CMAKE_CURRENT_SOURCE_DIR}/add_undefs.py < tmp.cxx > ${swig_generated_file_fullname}
DEPENDS TmpCWrap
COMMENT "Fixing defs for conflicting symbols in lapack and python")

add_dependencies(${SWIG_MODULE_PPToolbox_REAL_NAME} FixDefs)

关于python - cmake、swig 和 python : How to override conflicting symbols,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16030994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com