【问题标题】:How to force CMAKE in building SWIG module in release mode如何强制 CMAKE 在发布模式下构建 SWIG 模块
【发布时间】:2012-01-27 19:46:35
【问题描述】:

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

【问题讨论】:

    标签: cmake swig


    【解决方案1】:

    我想真正的问题是 MSVC 产生链接错误,因为缺少“python_d.lib” 只需插入 SWIG 接口(您的 *.i)文件的标题:

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

    ... 并删除

    #ifdef _MSC_VER 
    ... 
    #endif 
    

    当问题是一般性问题时,仅与 MSVC 无关

    【讨论】:

      【解决方案2】:

      嗯,把你的代码 sn-p 包装进去怎么样

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

      set(CMAKE_BUILD_TYPE ${CMAKE_TMP_BUILD_TYPE})
      

      ?

      【讨论】:

        【解决方案3】:

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

        SET_TARGET_PROPERTIES(_${PROJECT_NAME} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_DEBUG True)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-02
          • 2021-03-17
          相关资源
          最近更新 更多