On 07/30/2012 02:15 AM, Kyle Husmann wrote:
Hi all,
In my project I have a python program (call it program.py) that
references a python module also in my project (call it pymodule).
program.py gets installed to ${CMAKE_INSTALL_PREFIX}/bin/program and
pymodule gets installed to ${PYTHON_INSTALL_DIR}.
To make sure the program.py program always finds pymodule, I treat it
like a config script in cmake and then add the following to the top of
program.py.in http://program.py.in:
import sys
sys.path.append(@PYTHON_INSTALL_DIR@)
import pymodule
This works great, but it means that I can only run program.py after
running a make install, and running it from the installed location.
My question is, is there are clever way of doing this so that I can run
program.py from the build directory, without having to install it? (But
have it still run properly when installed)
Thanks,
Kyle
Call CONFIGURE_FILE() twice, once for the installation and once for the
build-tree:
set(CONFIG_PY_DIR ${PROJECT_SOURCE_DIR})
configure_file(program.py.in ${PROJECT_BINARY_DIR}/program.py @ONLY)
set(CONFIG_PY_DIR ${PYTHON_INSTALL_DIR})
configure_file(program.py.in
${PROJECT_BINARY_DIR}/installFiles/program.py @ONLY)
install(PROGRAMS ${PROJECT_BINARY_DIR}/installFiles/program.py
DESTINATION bin)
You'll need to replace PYTHON_INSTALL_DIR with CONFIG_PY_DIR in your
program.py.in file, of course. Also, I would replace the
sys.path.append(@CONFIG_PY_DIR@) call with sys.path.insert(0,
@CONFIG_PY_DIR@). There are pros and cons for each...
HTH
Michael
--
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake