2011-12-26 82 views
3

是否有办法强制设置cmake中的swig模块的发布模式以构建发布模式,而不管实际的构建类型是什么?如何在发布模式下强制CMAKE构建SWIG模块

我想构建一个使用swig自动生成代码的python模块,并且当我在调试模式下构建我的应用程序时,它抱怨一个python调试库。

我对调试python模块相关代码不感兴趣,所以我没有在调试模式下构建swig自动生成的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

嗯,怎么样在

set(CMAKE_TMP_BUILD_TYPE ${CMAKE_BUILD_TYPE}) 
set(CMAKE_BUILD_TYPE "Release") 

set(CMAKE_BUILD_TYPE ${CMAKE_TMP_BUILD_TYPE}) 

包装您的代码段?

0

您可以告诉CMake不要在某个配置的默认版本中包含项目。例如,对于一个Python模块(通过SWIG添加到目标下划线):

SET_TARGET_PROPERTIES(_${PROJECT_NAME} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_DEBUG True) 
1

我想,真正的问题是MSVC产生链接错误,由于缺少“python_d.lib” 只需插入到痛饮接口(你。我*)文件的标题:

%begin %{ 
#ifdef _MSC_VER 
#define SWIG_PYTHON_INTERPRETER_NO_DEBUG 
#endif 
%} 

...并删除

#ifdef _MSC_VER 
... 
#endif 

当问题是通用的,而不是只MSVC相关

相关问题