[Cmake] Re: [Swig] ANNOUNCE: CMake 2.0.3 with SWIG support

William A. Hoffman billlist at nycap.rr.com
Mon Aug 30 16:06:24 EDT 2004


Seems to be a problem with that flag.  Can you try this:

Put this before the FOREACH loop:

SET(CMAKE_SWIG_FLAGS -outdir "${EXECUTABLE_OUTPUT_PATH}")

-Bill

At 03:17 PM 8/30/2004, Anton Deguet wrote:
>Thank you for your answer.  The additional clean files works but I am
>having some difficulties with the -outdir option for SWIG.  Basically,
>the code I have adds a "\ " in the makefile and SWIG can not parse the
>options correctly.  My code is slightly different from your examples
>since I am wrapping a large number of libraries using a loop:
>
>FOREACH(lib ${CISST_LIBS})
>  IF(BUILD_${lib})
>    SET(SWIG_INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/${lib}.i)
>      IF(EXISTS ${SWIG_INTERFACE})
>         SET_SOURCE_FILES_PROPERTIES(${SWIG_INTERFACE} PROPERTIES
>CPLUSPLUS ON)
>         SET_SOURCE_FILES_PROPERTIES(${SWIG_INTERFACE}
>                                     PROPERTIES SWIG_FLAGS "-c++")
>         SET_SOURCE_FILES_PROPERTIES(${SWIG_INTERFACE}
>                                     PROPERTIES SWIG_FLAGS "-outdir
>${EXECUTABLE_OUTPUT_PATH}/")
>         SWIG_ADD_MODULE(${lib} python ${SWIG_INTERFACE})
>         SWIG_LINK_LIBRARIES(${lib} ${Python_LIBRARIES})
>        SET_DIRECTORY_PROPERTIES(PROPERTIES
>                                 ADDITIONAL_MAKE_CLEAN_FILES
>                                
>"${ADDITIONAL_MAKE_CLEAN_FILES};${EXECUTABLE_OUTPUT_PATH}/${lib}.py")
>      ENDIF(EXISTS ${SWIG_INTERFACE})
>  ENDIF(BUILD_${lib})
>ENDFOREACH(lib)
>
>The Makefile generated for one SWIG execution is:
>
>         /home/erc/bin/swig -python -outdir\
>/home/stomach/anton/devel/cisst/Linux-gcc/libs/bin/ -c++
>-I/home/stomach/anton/devel/cisst/libs/include
>-I/home/stomach/anton/devel/cisst/Linux-gcc/libs
>-I/usr/include/python2.2 -o
>/home/stomach/anton/devel/cisst/Linux-gcc/libs/wrapping/cisstVector_wrap.cxx /home/stomach/anton/devel/cisst/libs/wrapping/cisstVector.i
>
>As you can see, there is a "\ " after the -outdir option and SWIG
>doesn't like it.  what did I do wrong?
>
>Sincerely,
>
>Anton
>
>
>On Sat, 2004-08-21 at 06:02, William A. Hoffman wrote:
>> Hi, 
>> 
>> To move the .py files, you can use the swig -outdir option.
>> That can be set with the SWIG_FLAGS property, something like this:
>> 
>> SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES SWIG_FLAGS 
>> "-outdir ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}")
>> 
>> (That is assuming that you are using EXECUTABLE_OUTPUT_PATH.
>> 
>> For the make clean, you can add that like this:
>> 
>>   SET_DIRECTORY_PROPERTIES(PROPERTIES
>>     ADDITIONAL_MAKE_CLEAN_FILES "${ADDITIONAL_MAKE_CLEAN_FILES};myLibrary.py")
>> 
>> The problem is that running swig on a .i file may generate any number of .py files
>> depending on the classes being wrapped.  
>> 
>> -Bill
>> At 03:51 PM 8/20/2004, Anton Deguet wrote:
>> >Hello,
>> >
>> >I finally updated my projects to CMake 2.0.3 and decided to use the new
>> >macros introduced to simplify the SWIG wrapping.  I have one minor
>> >comment/addition for the Python wrapping.   Swig generates the file
>> >myLibrary.py and:
>> >- This file stays in the current binary directory.  It would be nice to
>> >have it moved to the directory where _myLibrary.so resides.
>> >- This file is not removed when I do make clean.  
>> >
>> >Sincerely,
>> >
>> >Anton Deguet
>> >
>> >
>> >On Wed, 2004-08-04 at 12:37, William A. Hoffman wrote:
>> >> CMake is a cross platform build manager. It allows you to specify build parameters for C and C++ programs in a cross platform manner. It generates native build files such as makefiles, nmake files and visual studio projects.
>> >> 
>> >> The most recent release contains direct support for SWIG projects.
>> >> 
>> >> A simple SWIG example follows:
>> >> 
>> >> 
>> >> PROJECT(example_python)
>> >> FIND_PACKAGE(SWIG REQUIRED)
>> >> INCLUDE(${SWIG_USE_FILE})
>> >> FIND_PACKAGE(PythonLibs)
>> >> INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
>> >> INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
>> >> SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES CPLUSPLUS ON)
>> >> SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES SWIG_FLAGS "-includeall")
>> >> SWIG_ADD_MODULE(example python example.i example.cxx)
>> >> SWIG_LINK_LIBRARIES(example ${PYTHON_LIBRARIES})
>> >> 
>> >> The above example will create makefiles or visual studio projects
>> >> that will run swig on example.i, generate the swig wrapper cxx file,
>> >> and compile example.cxx into _example.so (UNIX) or _example.dll (windows).
>> >> 
>> >> For more information about CMake, see:
>> >> www.cmake.org
>> >> 
>> >> 
>> >> -Bill Hoffman
>> >> 
>> >> _______________________________________________
>> >> Swig maillist  -  Swig at cs.uchicago.edu
>> >> http://mailman.cs.uchicago.edu/mailman/listinfo/swig
>> >-- 
>> >Anton Deguet                          Systems Engineer
>> >ERC CISST                     Johns Hopkins University
>> >http://cisstweb.cs.jhu.edu                410 516 5261
>-- 
>Anton Deguet                          Systems Engineer
>ERC CISST                     Johns Hopkins University
>http://cisstweb.cs.jhu.edu                410 516 5261



More information about the Cmake mailing list