[CMake] What is the preferred way to avoid "same name already exists" error

Jimi Damon jdamon at accesio.com
Thu Oct 3 14:54:43 EDT 2013


So ,

I just discovered the solution:

macro ( build_sample_cpp_file project cpp_file )
   GET_FILENAME_COMPONENT( tmp_cpp_file ${cpp_file} NAME )
   STRING(REGEX REPLACE "\\.cpp$" "" binary_name ${tmp_cpp_file})
   ADD_EXECUTABLE( "${project}_${binary_name}" ${cpp_file} )
   SET_TARGET_PROPERTIES( "${project}_${binary_name}" PROPERTIES 
OUTPUT_NAME  ${binary_name} )
   TARGET_LINK_LIBRARIES( "${project}_${binary_name}"  ${LINK_LIBS} )
endmacro ( build_sample_cpp_file )

Created an elongated name for the full target name and then specified 
the OUTPUT_NAME to be the shortened name,



On 10/03/2013 11:24 AM, Jimi Damon wrote:
> Hi,
>
> I have a number of directories that are named according to an 
> acquisition board in our full product line.  Under each directory 
> there are sample programs labeled "sample1.c", "sample2.c" ...etc.   
> While this isn't a very useful naming convention, I ran into the 
> problem of when I migrated the current GNU makefile based system over 
> to CMAKE, I tried to create a structure like the following
>
> add_subdirectory( samples/Product1 )
> add_subdirectory( samples/Product2 )
>
>
> What happens is that I get the error saying
> * add_executable cannot create target "sample" because another target with
>   the same name already exists.  The existing target is an executable 
> created
>   in source directory*
>
> What I was trying to get is a namespace encapsulated sample, such that 
> I would have to issue a
>
> make samples/Product1/sample1  in order to build that sample.
>
> Is there a way to prevent these namespace collisions other than just 
> renaming every single executable to have a unique name ? I want to 
> know the correct answer to this because I have a feeling that in the 
> future I won't always want to keep every single target name unique.
>
> Thanks
>
> -Jimi
>
>
>
>
> --
>
> 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://www.cmake.org/mailman/listinfo/cmake
> -- 
>
> 	
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20131003/51c41c70/attachment.htm>


More information about the CMake mailing list