2013-04-16 4 views
1

Я использую cmake для создания оболочки python с swig. Проблема в том, что существуют конфликтующие символы в лапаке и питоне. У меня есть простой скрипт для определения конфликтующих символов перед компиляцией, и я могу написать make-файл, который работает. Мне интересно, какой будет лучший подход при использовании cmake.cmake, swig и python: как переопределить конфликтующие символы

Этот Makefile работает:

tools_wrap.cc toolspy: tools.i ../libtools.a 
    swig -I../ -c++ -python $(PYFLAGS) -shadow -o tools_wrap_tmp.cc tools.i 
    # A terrible hack to override conflicting function names in python and lapack 
    python ./fix_undefs.py <tools_wrap_tmp.cc> tools_wrap.cc 

_tools.so: tools_wrap.cc ../libtools.a 
    $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(PYTHONINC) $(INCLUDES) -I../ tools_wrap.cc $(LIBS) -o _tools.so 

Спасибо за любую помощь!

Веса

ответ

1

После того, как ковыряться Cmake Swig-генератора, я пришел к следующему решению:

add_custom_target(TmpCWrap mv ${swig_generated_file_fullname} tmp.cxx 
    DEPENDS "${swig_generated_file_fullname}") 

add_custom_target(FixDefs python ${CMAKE_CURRENT_SOURCE_DIR}/add_undefs.py <tmp.cxx> ${swig_generated_file_fullname} 
    DEPENDS TmpCWrap 
    COMMENT "Fixing defs for conflicting symbols in lapack and python") 

add_dependencies(${SWIG_MODULE_PPToolbox_REAL_NAME} FixDefs) 
Смежные вопросы