[CMake] Single Letter Omissions From File Path In Linker

Bill Hoffman bill.hoffman at kitware.com
Mon Oct 17 11:54:02 EDT 2016


Can you create a small example that shows the problem?  Even a small 
full example with the code you have below so I can better understand it.

-Bill


On 10/17/2016 10:59 AM, Randy Turner 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
> <mailto:andrew.bell.ia at gmail.com>> wrote:
>
>     On Fri, Oct 14, 2016 at 9:04 AM, Randy Turner
>     <randallsturner13 at gmail.com <mailto: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.dir/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 <mailto:andrew.bell.ia at gmail.com>
>
>
>
>


-- 
Bill Hoffman
Kitware, Inc.
28 Corporate Drive
Clifton Park, NY 12065
bill.hoffman at kitware.com
http://www.kitware.com
518 881-4905 (Direct)
518 371-3971 x105
Fax (518) 371-4573


More information about the CMake mailing list