有没有办法在cmake中强制设置swig模块的发布模式,无论实际的构建类型是什么,都可以在发布模式下构建?
我正在尝试使用swig自动生成的代码构建python模块,当我在调试模式下构建应用程序时,它会抱怨python调试库。
我对调试python模块相关代码不感兴趣,所以我没有在调试模式下构建swig autogenerated python模块。
以下是我在cmakelists.txt文件中的内容:
set_source_files_properties(abstract.i PROPERTIES CPLUSPLUS on)
swig_add_module(${PROJECT_NAME} python abstract.i)
swig_link_libraries(${PROJECT_NAME} ${PROJECT_NAME} ${PYTHON_LIBRARIES})
答案 0 :(得分:2)
我认为真正的问题是MSVC产生链接错误,因为缺少" python_d.lib" 只需插入SWIG界面(您的* .i)文件的标题:
%begin %{
#ifdef _MSC_VER
#define SWIG_PYTHON_INTERPRETER_NO_DEBUG
#endif
%}
...并删除
#ifdef _MSC_VER
...
#endif
当问题是通用的,而不是仅与MSVC相关的
答案 1 :(得分:0)
嗯,如何将代码段包装在
中set(CMAKE_TMP_BUILD_TYPE ${CMAKE_BUILD_TYPE})
set(CMAKE_BUILD_TYPE "Release")
和
set(CMAKE_BUILD_TYPE ${CMAKE_TMP_BUILD_TYPE})
答案 2 :(得分:0)
您可以告诉CMake不要在某个配置的默认构建中包含项目。例如,对于Python模块(通过SWIG将下划线添加到目标):
SET_TARGET_PROPERTIES(_${PROJECT_NAME} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_DEBUG True)