[CMake] CMAKE_EXPORT_COMPILE_COMMANDS for linker commands?

2018-10-26 Thread Luis Díaz Más
Hi all,

I was wondering if there is something similar
to CMAKE_EXPORT_COMPILE_COMMANDS but also exporting the linker commands. At
this moment it seems like it is only exporting the compiler commands for
each translation unit.

Best regards,
Luis
-- 

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:
https://cmake.org/mailman/listinfo/cmake


Re: [CMake] Error with ninja generator when using target_link_library with the debug keyword

2016-10-10 Thread Luis Díaz Más
Hi,

I just want to confirm that I have the same problem on Windows with the
Ninja generator. Even when I always use both keywords (debug & optimized)
in my *target_link_libraries *commands I still got a *ninja.build *file
that has bad $-escape characters.

I think that this problem is happening only when I tried to compile a
library twice (shared and static) and I tried to propagate the
*LINK_LIBRARIES* property from the shared library to the static one:

add_library(mylib SHARED ${mylib_all_sources})
add_library(mylib_static STATIC EXCLUDE_FROM_ALL ${mylib
_all_sources})

target_link_libraries(mylib PUBLIC ${SOME_LIBS})
target_link_libraries(mylib_static PUBLIC
$<TARGET_PROPERTY:mylib,LINK_LIBRARIES>)

Only in that situation is when I got the weird bad $-escape characters on
the ninja.build file. This is an example of the line with these problems:

  LINK_LIBRARIES = C:\myProject\buildRelease\bin64\library1.lib
  C:\myProject\buildRelease\bin64\library2.lib
  C:\myProject\libs\gmock.lib
  C:\myProject\libs\CGAL-vc120-mt-4.4.lib
  C:\myProject\libs\exiv2.lib
  C:\myProject\libs\ceres.lib
  ... // removing some lines
  $<$<NOT:$>:C:/myProject\libs/CGAL-vc120-mt-4.4.lib>
  $<$:C:/myProject\libs/CGAL-vc120-mt-gd-4.4.lib>
  ... // removing some lines
  $<$<NOT:$>:C:/myProject\libs/exiv2.lib>
  $<$:C:/myProject\libs/exiv2d.lib>
  $<$<NOT:$>:C:/myProject\libs/ceres.lib>
  $<$:C:/myProject\libs/ceres-debug.lib>
  ...
  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib
oleaut32.lib uuid.lib comdlg32.lib advapi32.lib

I will try to create a minimum example to reproduce this issue.

Cheers,
Luis


2016-10-05 16:39 GMT+02:00 Luis Díaz Más <pipon...@gmail.com>:

> Hi all,
>
> I have found a problem while configuring a project and I want to share the
> experience with you to figure out whether it is a known problem or a bug in
> CMake.
>
> In some cases I use the cmake command *target_link_libraries *specifying
> different libraries for the *debug* and *optimized* modes. This normally
> work as expected. However recently we got a problem with the Ninja
> generator. This is what I could see in the console when I try to compile
> the project:
>
> ninja: error: build.ninja:4956: bad $-escape (literal $ must be written as
> $$)
>
>
> The content of the file in that particular line has something like this:
>
> $<$:/home/luis///lib/libCGAL.so>
>
> Examining my cmake configuration I noticed that a colleague introduced
> something like that in the *target_link_libraries* call:
>
> ${ZLIB_LIBRARIES}
> debug;${CGAL_LIB}
> ${GMP_LIB}
>
> If we specify the debug & optimized modes we do not have problems. However
> in this particular case, it seems that we only need to link against the
> CGAL in debug mode and not in release mode. Note that with a Make generator
> we can compile normally the project.
>
> The work around for this case is to link normally against CGAL when we are
> in Debug mode:
>
> if (${CMAKE_BUILD_TYPE} STREQUAL Debug)
> target_link_libraries(myTarget ${CGAL_LIB}
> endif()
>
> So ... the questions are:
>
>
>- Is it possible to use *target_link_libraries *only with one of the
>modes (debug  / optimized) ?
>- The Make generator works properly for this case. Could it be a bug
>with the Ninja generator? I tried with the most recent versions of CMake &
>Ninja.
>
> Best regards,
> Luis Diaz Mas
>
-- 

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

[CMake] Error with ninja generator when using target_link_library with the debug keyword

2016-10-05 Thread Luis Díaz Más
Hi all,

I have found a problem while configuring a project and I want to share the
experience with you to figure out whether it is a known problem or a bug in
CMake.

In some cases I use the cmake command *target_link_libraries *specifying
different libraries for the *debug* and *optimized* modes. This normally
work as expected. However recently we got a problem with the Ninja
generator. This is what I could see in the console when I try to compile
the project:

ninja: error: build.ninja:4956: bad $-escape (literal $ must be written as
$$)


The content of the file in that particular line has something like this:

$<$:/home/luis///lib/libCGAL.so>

Examining my cmake configuration I noticed that a colleague introduced
something like that in the *target_link_libraries* call:

${ZLIB_LIBRARIES}
debug;${CGAL_LIB}
${GMP_LIB}

If we specify the debug & optimized modes we do not have problems. However
in this particular case, it seems that we only need to link against the
CGAL in debug mode and not in release mode. Note that with a Make generator
we can compile normally the project.

The work around for this case is to link normally against CGAL when we are
in Debug mode:

if (${CMAKE_BUILD_TYPE} STREQUAL Debug)
target_link_libraries(myTarget ${CGAL_LIB}
endif()

So ... the questions are:


   - Is it possible to use *target_link_libraries *only with one of the
   modes (debug  / optimized) ?
   - The Make generator works properly for this case. Could it be a bug
   with the Ninja generator? I tried with the most recent versions of CMake &
   Ninja.

Best regards,
Luis Diaz Mas
-- 

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