[CMake] Single Letter Omissions From File Path In Linker

Randy Turner randallsturner13 at gmail.com
Mon Oct 17 10:59:56 EDT 2016


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20161017/e8d3adeb/attachment.html>


More information about the CMake mailing list