如何在发布模式下强制CMAKE构建SWIG模块

时间:2011-12-26 05:30:02

标签: cmake swig

有没有办法在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})

3 个答案:

答案 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)