[CMake] Single Letter Omissions From File Path In Linker

Max Smolens max.smolens at kitware.com
Mon Oct 17 13:50:23 EDT 2016


Hi Randy,

The missing character issue is likely due to some stage of your build
process hitting a command line length limit on Windows. Similar problems
have been described in 3D Slicer builds [1] [2], although in that case the
problems were related to (a) many include directories and (b) explicitly
passing a long command line to add_custom_command().

Your project may be different, because the error occurs while linking, but
hopefully these references help.

Thanks,
Max

[1] http://slicer-devel.65872.n3.nabble.com/VS2008-build-
td4032311.html#a4032337
[2] https://www.na-mic.org/Bug/view.php?id=3157


On Mon, Oct 17, 2016 at 10:59 AM, Randy Turner <randallsturner13 at gmail.com>
wrote:

> Thanks, Andrew, Bill, and Zan! I'm not completely certain that
> reinstalling Windows is the only or even the best solution, but once we all
> moved our repositories into our root directories I have not found another
> solution, even temporary. Of our six dev machines, it is a recurring
> problem on two and has occurred once on a third. The other three have never
> seen this problem.
>
> I did some digging on Friday and found that the problem seems to be
> connected to this call below to add all of our code files to a library to
> be used an item in the add_executable() command for each of our targets.
>
> foreach (code ${code_files})
>     get_filename_component (codeName ${code} NAME_WE)
>     add_library (${codeName} OBJECT
>      ${code}
>   )
>   list(APPEND codelib $<TARGET_OBJECTS:${codeName}>)
> endforeach()
>
> If I remove that loop and add code_files instead of codelib to the
> executables then the problem disappears, but this breaks most of the
> functionality of my implementation of CMake, so this isn't a long-term
> solution. Using the library call above I followed the file paths around the
> script and printed them out at every step through the makefile generation
> and never saw any incorrect paths, but then I called the compiler and saw
> it error out.
>
> The project uses "Unix Makefiles" to run on TI's gmake compiler 7.4.14.
> I'm have been using CMake 3.5.2. I upgraded to 3.6.2 and continue to see
> the same problem. I will move forward with looking into this library issue
> but I'm sure what I expect to find.
>
> On Fri, Oct 14, 2016 at 10:16 AM, Andrew Bell <andrew.bell.ia at gmail.com>
> wrote:
>
>> On Fri, Oct 14, 2016 at 9:04 AM, Randy Turner <randallsturner13 at gmail.com
>> > wrote:
>>
>>> Hello! I've been running into a frustrating issue on and off for the
>>> past year. The project will build the source files correctly but when it
>>> comes to linking the executables, I always get the same error. The specific
>>> file varies, but the failure mode is always the same. For example:
>>>
>>> <Linking>
>>> "C:\\Users\\User\\AppData\\Local\\Temp\\<six digit temp file>", line
>>> xxx: error #10008-D: cannot find file
>>> "C:/Repos/operatingsystem/CMakeFiles/nvm_validate_ierator.di
>>> r/os/nvm/nvm_validate_iterator.c.obj"
>>>
>>> As you can see, the file path is missing a "t" in the first occurrence
>>> of the word "iterator" and so that file definitely does not exist. A file
>>> exists in the location with correct spelling, but somehow that hardcoded
>>> path in that temporary file has dropped a letter. The specific letter that
>>> gets dropped varies along with which file is allegedly missing. We noticed
>>> that requiring people to store the repository in their root directory
>>> greatly cut down on the occurrence of this issue but it is returning with
>>> more frequency as of late. Once it occurs once, CMake builds are never
>>> successful again and the only way that I have been able to completely clear
>>> the problem has been to reinstall Windows and set up the build environment
>>> again.
>>>
>>
>> This seems really, really strange.  Have to reinstall Windows?  What
>> about just using another build directory?  It sure *seems* like there's
>> some problem in your CMakeFiles.txt where the way the filepath is being
>> constructed is incorrect.  But I don't think you've really provided enough
>> information to determine the problem.  Where does the name of the object
>> file come from?
>>
>> --
>> Andrew Bell
>> andrew.bell.ia at gmail.com
>>
>
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/
> opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20161017/d4455f0d/attachment.html>


More information about the CMake mailing list