[cmake-developers] [CMake 0015032]: Binary and source path not handled properly if path does not contain a sub-directory but "drive letter" only
Mantis Bug Tracker
mantis at public.kitware.com
Tue Jul 22 09:43:05 EDT 2014
The following issue has been SUBMITTED.
======================================================================
http://www.itk.org/Bug/view.php?id=15032
======================================================================
Reported By: Gerald Hofmann
Assigned To:
======================================================================
Project: CMake
Issue ID: 15032
Category: CMake
Reproducibility: always
Severity: major
Priority: normal
Status: new
======================================================================
Date Submitted: 2014-07-22 09:43 EDT
Last Modified: 2014-07-22 09:43 EDT
======================================================================
Summary: Binary and source path not handled properly if path
does not contain a sub-directory but "drive letter" only
Description:
If building in a binary directory that is on root level of a "drive letter" the
binary path name is not handled properly.
Src directory handling also affected, but workaround available.
Steps to Reproduce:
- Open terminal and cd to a root level build directory (e.g. network share
mapped to a server based platform specific build dir)
- Issue "cmake-gui s:" (assuming s: points to the src dir)
- Find binary dir preset with training backslash. src dir has no training
backslash.
- Re-select src directory from "browse source" and find the training backslash
added
First error occourence:
=======================
- Try to configure for any generator.
CMake Error at s://CMakeLists.txt:42 (add_subdirectory):
add_subdirectory not given a binary directory but the given source
directory "s:/foo" is not a subdirectory of "s:/".
=> Looks strange. Error message is not correct. All dirs are in place.
- Apply work-around by removing training backslash in source directory (keep it
for the bin directory)
- Re-configure -> works
Extended error occourence:
==========================
- Removing the backslash from src dir seemingly works. Run generate.
- Find Makefile not working
- Makefiles containing wrong build targets
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start U:\CMakeFiles
U:\CMakeFiles\progress.marks
$(MAKE) -f CMakeFiles\Makefile2 /nologo -$(MAKEFLAGS) U:\\all
$(CMAKE_COMMAND) -E cmake_progress_start U:\CMakeFiles 0
.PHONY : all
=> "all" target is prefixed by the binary dir drive letter. Makefile is not
usable. Manually removing the "U:\\" prefix from the target name will fix the
Makefile. All other entries seem to be correct.
Additional Information:
Probably introduced in late 2.8.x releases
Worked in 2.8.2, found during update to 2.8.12 / 3.0.0
Workaround: Always use subdirectory for the binary dir. Make sure there is no
training slash in src and bin directory entry.
Probable explanation: Path names are not split up properly. cmake seems to
expext *no training slash* for src/bin path names (GUI or cl). If selected dir
is on root level, internal splitting fails, probably because the parser is
looking for a backslash to separate drive letter and relative bin path
components. Adding a trailing slash will cure configure stage processing, but
bin directory handling is broken by this "enforced" parsing.
*** Windoze console path names == root of all evil.... ***
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2014-07-22 09:43 Gerald Hofmann New Issue
======================================================================
More information about the cmake-developers
mailing list