View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0015273CMakeCMakepublic2014-12-01 08:252016-06-10 14:31
ReporterNils Gladitz 
Assigned ToKitware Robot 
PrioritynormalSeverityfeatureReproducibilityalways
StatusclosedResolutionmoved 
PlatformOSOS Version
Product VersionCMake 3.1 
Target VersionFixed in Version 
Summary0015273: file(GLOB/GLOB_RECURSE) should provide an option to set a start directory
DescriptionGenerated target export files for example use:

  get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
  file(GLOB CONFIG_FILES "${_DIR}/TdngTargets-*.cmake")

This is error prone in case _DIR itself happens to use special characters interpreted by globbing.

Something like:
  file(GLOB CONFIG_FILES START_DIRECTORY "${_DIR}" "TdngTargets-*.cmake")

would be nice.
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0037327)
David Cole (manager)
2014-12-01 11:12

If somebody implements this, perhaps the new argument name should be WORKING_DIRECTORY ... similar to the add_test, add_custom_command and execute_process arguments that exist already.
(0037330)
Nils Gladitz (developer)
2014-12-01 11:22

I'd argue against WORKING_DIRECTORY since in this case the working directory (as in e.g. chdir()/getcwd()) does not change and there is no external process being run.
(0037331)
David Cole (manager)
2014-12-01 11:48

On this line:

http://www.cmake.org/gitweb?p=cmake.git;a=blob;f=Source/kwsys/Glob.cxx;h=5a96aed430e552c3932dcc620d25dde687b0ca47;hb=HEAD#l376 [^]

Glob::FindFiles uses GetCurrentWorkingDirectory as prefix for the globbing expression if the input to it is not already prefixed by a full path directory name.

It may be just an implementation detail, but the implementation is the thing that is limiting you to not being allowed to have globbing characters in the name of the directory. Since you'll need to change the implementation anyway, you may as well change the working directory for the scope of the call, restoring it to its original value on the way out, of course.
(0037332)
Nils Gladitz (developer)
2014-12-01 12:00

Hm yes, I saw the implementation and was thinking the kwsys interface should be extended to allow other starting directories but if it means not having to touch kwsys changing the working directory should work too.
(0037333)
David Cole (manager)
2014-12-01 12:10

I'm surprised this is even an issue since you cannot name directories with "?" or "*" characters in them on Windows.

I guess you're allowed to have those characters in directory names on other operating systems? (I would still advise against using them, but you must have encountered this in the wild for it to be an issue?)
(0037334)
David Cole (manager)
2014-12-01 12:11

And even if you do change the working directory, you will have to touch kwsys to fix this issue. That's where the problem lies...
(0037335)
Nils Gladitz (developer)
2014-12-01 12:22

I didn't step on this myself but I think [] might be (slightly) more common than ? * (and also valid on windows).

On Linux I can indeed have a directory named "*?[]".

I overlooked that kwsys actually makes the current working directory part of the expression :\

So yes either kwsys would have to be changed or perhaps cmake could use a full path but escape it before passing it through to kwsys.
(0037336)
David Cole (manager)
2014-12-01 12:41

I guess I'm guilty of thinking lowest common denominator here: only ? and * may be used in globbing expressions under Windows cmd.exe -- I don't know if [] even work on Windows here.

The table in the wikipedia article would imply [] are unsupported on Windows, at least directly in cmd.exe. Perhaps they do work in the Windows API calls that CMake uses.

http://en.wikipedia.org/wiki/Glob_%28programming%29 [^]

Either way, I think this issue is a valid idea for an improvement to CMake ... hopefully somebody has time to pick it up and work on it.
(0042678)
Kitware Robot (administrator)
2016-06-10 14:29

Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current CMake Issues page linked in the banner at the top of this page.

 Issue History
Date Modified Username Field Change
2014-12-01 08:25 Nils Gladitz New Issue
2014-12-01 11:12 David Cole Note Added: 0037327
2014-12-01 11:22 Nils Gladitz Note Added: 0037330
2014-12-01 11:48 David Cole Note Added: 0037331
2014-12-01 12:00 Nils Gladitz Note Added: 0037332
2014-12-01 12:10 David Cole Note Added: 0037333
2014-12-01 12:11 David Cole Note Added: 0037334
2014-12-01 12:22 Nils Gladitz Note Added: 0037335
2014-12-01 12:41 David Cole Note Added: 0037336
2016-06-10 14:29 Kitware Robot Note Added: 0042678
2016-06-10 14:29 Kitware Robot Status new => resolved
2016-06-10 14:29 Kitware Robot Resolution open => moved
2016-06-10 14:29 Kitware Robot Assigned To => Kitware Robot
2016-06-10 14:31 Kitware Robot Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team