Как заставить CMAKE создать модуль SWIG в режиме выпуска - PullRequest
3 голосов
/ 26 декабря 2011

Есть ли способ принудительно установить режим выпуска модулей swig в cmake для сборки в режиме выпуска независимо от того, какой тип сборки используется?

Я пытаюсь собрать модуль python с использованием автоматически сгенерированного кода swig, и он жалуется на библиотеку отладки python при сборке приложения в режиме отладки.

Меня не интересует отладка кода, связанного с модулями Python, поэтому я согласен не собирать автоматически созданные модули Python swig в режиме отладки.

Вот что у меня есть в файле 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 ]

2 голосов
/ 15 июня 2016

Полагаю, реальная проблема заключается в том, что MSVC выдает ошибку соединения из-за отсутствующего "python_d.lib" Просто вставьте в заголовок файлов интерфейса SWIG (ваши * .i) файлы:

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

... и удалить

#ifdef _MSC_VER 
... 
#endif 

когда проблема носит общий характер, не относится только к MSVC

0 голосов
/ 29 августа 2013

Вы можете указать CMake не включать проект в сборку по умолчанию для определенной конфигурации.Например, для модуля Python (с подчеркиванием, добавленным к цели SWIG):

SET_TARGET_PROPERTIES(_${PROJECT_NAME} PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD_DEBUG True)
0 голосов
/ 26 декабря 2011

Хм, а как насчет упаковки кода в

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

и

set(CMAKE_BUILD_TYPE ${CMAKE_TMP_BUILD_TYPE})

?

...