[cmake-developers] [CMake 0013449]: [CROSS-CC] FindSWIG.cmake does not work when CMAKE_FIND_ROOT is redefined and CMAKE_FIND_ROOT_PATH_MODE_INCLUDE is set to ONLY
Mantis Bug Tracker
mantis at public.kitware.com
Wed Aug 1 08:00:52 EDT 2012
The following issue has been SUBMITTED.
======================================================================
http://www.cmake.org/Bug/view.php?id=13449
======================================================================
Reported By: Miguel FIGUEIREDO
Assigned To:
======================================================================
Project: CMake
Issue ID: 13449
Category: CMake
Reproducibility: always
Severity: minor
Priority: normal
Status: new
======================================================================
Date Submitted: 2012-08-01 08:00 EDT
Last Modified: 2012-08-01 08:00 EDT
======================================================================
Summary: [CROSS-CC] FindSWIG.cmake does not work when
CMAKE_FIND_ROOT is redefined and CMAKE_FIND_ROOT_PATH_MODE_INCLUDE is set to
ONLY
Description:
The "FindSWIG.cmake" script internally uses the command FIND_PATH() to set
SWIG_DIR variable.
This command may have the path prefix overriden if :
- the variable CMAKE_FIND_ROOT is redefined to point to a different root path
than the host machine root path, and
- the variable CMAKE_FIND_ROOT_PATH_MODE_INCLUDE is set to ONLY.
This is a typical use case when building for embedded targets.
Steps to Reproduce:
- Create a CMakeList.txt which have "find_package(SWIG)" into it (see
http://www.cmake.org/Wiki/CMake_FAQ#How_do_I_use_CMake_to_generate_SWIG_wrapper_libraries.3F).
- Create a cmake toolchain script which redefines CMAKE_FIND_ROOT and set
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE to only (see
http://www.vtk.org/Wiki/CMake_Cross_Compiling#The_toolchain_file).
- Run cmake and make
- The build system should report the following error :
"CMake Error at
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:91 (MESSAGE):
Could NOT find SWIG (missing: SWIG_DIR)
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:252
(_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindSWIG.cmake:74
(FIND_PACKAGE_HANDLE_STANDARD_ARGS)
lw_pvod_core/binding/CMakeLists.txt:1 (find_package)"
Additional Information:
I solve the issue by adding the parameter NO_CMAKE_FIND_ROOT_PATH to FIND_PATH()
command avoiding path prefix overriding.
--- /usr/share/cmake-2.8/Modules/FindSWIG.cmake 2012-08-01 13:57:45.732656623
+0200
+++ FindSWIG.cmake 2012-08-01 13:57:51.528656642 +0200
@@ -45,7 +45,7 @@
STRING(REGEX REPLACE "[\n\r]+" ";" SWIG_swiglib_output
${SWIG_swiglib_output})
# force the path to be computed each time in case SWIG_EXECUTABLE has
changed.
SET(SWIG_DIR SWIG_DIR-NOTFOUND)
- FIND_PATH(SWIG_DIR swig.swg PATHS ${SWIG_swiglib_output})
+ FIND_PATH(SWIG_DIR swig.swg PATHS ${SWIG_swiglib_output}
NO_CMAKE_FIND_ROOT_PATH)
IF(SWIG_DIR)
SET(SWIG_USE_FILE ${CMAKE_ROOT}/Modules/UseSWIG.cmake)
EXECUTE_PROCESS(COMMAND ${SWIG_EXECUTABLE} -version
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2012-08-01 08:00 Miguel FIGUEIREDONew Issue
======================================================================
More information about the cmake-developers
mailing list