[CMake] CMakeLists.txt location

Nils Gladitz nilsgladitz at gmail.com
Wed Sep 13 08:45:33 EDT 2017


On 13.09.2017 14:31, Alain Miniussi wrote:
>
>
> On 13/09/2017 12:49, Nils Gladitz wrote:
>>  [...]
>> Do you have a minimal reproducible example for that behaviour?
>>
>>
>> e.g. given:
>>
>>    cmake_minimum_required(VERSION 2.8.0)
>>
>>     project(Foo NONE)
>>
>>     file(WRITE foo/CMakeLists.txt "add_executable()")
>>
>>     add_subdirectory(foo)
>>
>>
>> I get:
>>
>>     CMake Error at foo/CMakeLists.txt:1 (add_executable):
>>       add_executable called with incorrect number of arguments
>>
>>
>> Even with the oldest CMake version currently available to me (2.8.0).
> That test case works for me too. But my real case does not.
> I think it would be tricky to minimized, what is failling is the 
> second run of cmake, after a modification in the build system or in a 
> configure_file source.
>
> --------------------------------
> CMake Error at CMakeLists.txt:14 (add_executable):
>   Target "cmTC_60ee6" links to item " -Xlinker --enable-new-dtags 
> -Xlinker
>   -rpath -Xlinker
> /opt/software/common/intel/impi/2017.0.098/intel64/lib/release_mt 
> -Xlinker
>   -rpath -Xlinker /opt/software/common/intel/impi/2017.0.098/intel64/lib
>   -Xlinker -rpath -Xlinker 
> /opt/intel/mpi-rt/2017.0.0/intel64/lib/release_mt
>   -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/2017.0.0/intel64/lib
> /opt/software/occigen/libraries/boost/1_63_0/intel/17.0/intelmpi/2017.0.098/lib/libboost_serialization.a" 
>
>   which has leading or trailing whitespace.  This is now an error 
> according
>   to policy CMP0004.
>
>
> CMake Error: Internal CMake error, TryCompile generation of cmake failed
> INFO   Boost MPI not available or too old:
> --------------------------------
>
> Now, maybe the problem is with a CMakeLists.tx generated by a 
> try_compile.
> Indicating that I would actually need the location of the try_compile.
>
> Thanks
>
> Alain 

Ok, I assume that means you are actually looking at CMakeError.log and 
not the output you get from CMake concerning your own project's 
configuration run.
try_compile() runs aren't necessarily meant to succeed but rather their 
outcome is used in conditionals which may or may not have fatal outcomes 
for your actual project.

If a fatal diagnostic is produced based on such a conditional it would 
be visible in CMake's direct output (with file and line information) not 
CMakeError.log.
You only need to look at CMakeError.log to understand why a 
try_compile() did not succeed even though you would have expected it to.

The CMakeLists.txt where the error comes from in your failing 
try_compile() is generated and temporary so you will not find it in your 
own sources.

Nils


More information about the CMake mailing list