I am wrapping a library with SWIG and using CMake to generate the build
scripts for me, this is all working really well. My issue is the
location of the generated .cxx files.
I have my code laid out as follows:
In the python/CMakeLists.txt I have a source file defined relative to
the current cmake directory, like so:
When I execute the build command in build-python2.7 the generated .cxx
files are created in the swig/interface directory. This is in the
source tree and I do not want them there. So my question is how do I
stop those intermediate .cxx files from being created in my source
tree? or How do other users stop those intermediate .cxx files from
being created in their source tree?
My problem is that my swig files are a sibling directory of the python
where the CMakeLists.txt file is so I specify the relative path using '..'
If I try and pass through the absolute path of the swig interface files
I get a CMake error telling me it cannot find the source file! It is
trying to append the absolute path onto the current CMAKE_SOURCE_DIR.
Which in my case is not a substring of the absolute source file string.
If my build tree is located anywhere else, then the directory
../interface probably won't exist and the build will fail when it tries
to compile an interface file.
I'm still having problems with this. It seems my swig is not creating
the output directory for the swig generated cxx file. To get this to
work I have had to add a further make_directory command to the custom
command to create the required output directory before the file is swigged.
I have done some testing and I cannot get any swig output if the .i file
is not in the same directory as the CMakeLists.txt file. Any ideas?