问题描述
我正在尝试使用Boost Python
将C ++库包装到python模块中。
由于库中有许多配置,所以我希望输出共享库的名称取决于配置。
例如,在我的CMakeLists.txt
中(CONfig是用户传递的变量,是整数)
string(APPEND lib_name "config_" ${CONfig})
add_library(${lib_name} SHARED wrapper.cpp)
string(toupper define_name ${lib_name})
set_target_properties(${lib_name} PROPERTIES COMPILE_DEFinitioNS ${define_name})
target_link_libraries(${lib_name} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
在我的wrapper.cpp
中,我使用#ifdef
,#define
和#endif
来命名模块
#ifdef CONfig_1
#define MODULE_NAME config_1
#endif
#ifdef CONfig_2
#define MODULE_NAME config_2
#endif
// etc
BOOST_PYTHON_MODULE(MODULE_NAME){
// wrapping
}
但是我尝试导入时出现导入错误
import config_X
由于未定义初始化模块
是否有根据应用程序命名共享对象的方法,而不是固定方法?非常感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)