[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