19.01.2018, 21:22, "Chuck Atkins" <[email protected]>:
> Hi Franck,
>
> I'd suggest going a little more robust by using both 
> CMAKE_SHARED_LIBRARY_PREFIX and CMAKE_SHARED_LIBRARY_SUFFIX to generate a 
> function at configure time to resolve the correct filename.
>
> For example, util.h.in:
>
> #ifndef _UTIL_H_
> #define _UTIL_H_
>
> #include <stdio.h>
>
> static inline
> void get_library_filename(char* filename, const char* libname)
> {
>   sprintf(filename, 
> "@CMAKE_SHARED_LIBRARY_PREFIX@%s@CMAKE_SHARED_LIBRARY_SUFFIX@", libname);
> }
>
> #endif /* _UTIL_H_ */
>
> Then your CMakeLists.txt:
>
> configure_file(
>   ${CMAKE_CURRENT_SOURCE_DIR}/util.h.in
>   ${CMAKE_CURRENT_BINARY_DIR}/util.h
>   @ONLY
> )
> add_executable(foo main.c ${CMAKE_CURRENT_BINARY_DIR}/util.h)
> target_include_directories(foo PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
>
> And finally main.c:
>
> #include <stdio.h>
> #include <util.h>
>
> int main(int argc, char **argv)
> {
>   char filename[256];
>
>   get_library_filename(filename, "foo");
>
>   printf("Library foo uses file %s\n", filename);
>
>   return 0;
> }
>
> This will give you "libfoo.so" on Linux, "libfoo.dylib" on Apple, and 
> "foo.dll" on Windows.

Note that Windows DLLs may also happen to have to lib prefix (e.g. CMake adds 
them
by default when building projects with MinGW).

>
> ----------
> Chuck Atkins
> Staff R&D Engineer, Scientific Computing
> Kitware, Inc.
>
> On Tue, Jan 9, 2018 at 10:04 AM, Franck Houssen <[email protected]> 
> wrote:
>> Thanks !
>>
>> ----- Mail original -----
>>> De: "Konstantin Tokarev" <[email protected]>
>>> À: "Franck Houssen" <[email protected]>, "CMake Mail List" 
>>> <[email protected]>
>>> Envoyé: Mardi 9 Janvier 2018 16:00:55
>>> Objet: Re: [CMake] how to detect architecture ?
>>>
>>>
>>>
>>> 09.01.2018, 17:58, "Franck Houssen" <[email protected]>:
>>> > Is there a way to detect architecture ?
>>> >
>>> > Seems there is nothing simple since these old threads :
>>> > https://stackoverflow.com/questions/11944060/how-to-detect-target-architecture-using-cmake/12024211#12024211
>>> > https://stackoverflow.com/questions/16796629/cmake-create-architecture-aware-makefile
>>> >
>>> > Is there a solution now ?
>>> >
>>> > My need is quite simple: I have an executable who needs dlopen. To test 
>>> > it,
>>> > I planned to write a bash script that would have done "./exe
>>> > /path/to/lib.so" on linux (debian, ...) OR "./exe /path/to/lib.dylib" on
>>> > osx. To replace correctly so/dylib in the bash script I need to know the
>>> > architecture. Any idea how to do this ?
>>>
>>> ${CMAKE_SHARED_LIBRARY_SUFFIX}
>>>
>>
>> Oh man ! Didn't know this one : exactly what I was looking for
>>
>>> > Franck
>>> > ,--
>>> >
>>> > 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
>>>
>>>
>>> --
>>> Regards,
>>> Konstantin
>>>
>> --
>>
>> 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


-- 
Regards,
Konstantin
-- 

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

Reply via email to