[CMake] CMake and shared|static/release|debug?

Dan Kegel dank at kegel.com
Tue Nov 18 13:47:51 EST 2014


I'm facing the question of static myself now, porting a large automake
project to cmake.

I guess I'll mirror automake's practice of  having separate
--enable-static and --enable-shared settings, and allow both to be
built at once.
It's a bit ambiguous (which one gets tested?), but since I'm just
reproducing old behavior, that's probably ok.

It was tempting to make Static be a suffix on CMAKE_BUILD_TYPE, but
nobody seems to do that...?

On Sat, Feb 8, 2014 at 9:08 PM, Littlefield, Tyler <tyler at tysdomain.com> wrote:
> hello:
> thanks all for the help--I really appreciate it. that cleaned up my file
> quite a lot and was exactly what I was aiming for.
> Thanks again,
>
>
> On 2/5/2014 6:17 AM, Johannes Zarl wrote:
>>
>> Hi,
>>
>> On Tuesday, 4. February 2014, 23:41:55, Littlefield, Tyler wrote:
>>>
>>> I've tried this a few different ways and ran into issues. If someone
>>> wouldn't mind pointing out where I'm going wrong, I would appreciate it.
>>> (for example if there's a better way to do what I'm trying).
>>
>> It would help if you also included a textual description of the thing you
>> want
>> to achieve and your issues. Since the cmake compiler does not do what you
>> want
>> it to do, it is quite plausible that the people on this list having a good
>> understanding of cmake will misinterpret your cmake code...
>>
>> That aside, as Jakub pointed out, it seems that you try to reimplement the
>> CMAKE_BUILD_TYPE support on your own.
>>
>> As to the shared library stuff: CMake can already build shared and static
>> libraries in the same build:
>>
>> set( MYLIB_SRCS mylibsource1.cxx mylibsource2.cxx)
>> add_library( mylib-static STATIC ${MYLIB_SRCS})
>> add_library( mylib-static SHARED ${MYLIB_SRCS})
>>
>> If you want to make it a choice, you could do it like this:
>>
>> set( BUILD_LIBTYPE SHARED CACHE STRING "SHARED or STATIC" )
>> # enforce string in the gui:
>> set_property(CACHE BUILD_LIBTYPE PROPERTY STRINGS SHARED STATIC)
>> if ( NOT BUILD_LIBTYPE STREQUAL STATIC )
>>    set ( BUILD_LIBTYPE SHARED CACHE STRING "" FORCE)
>> endif()
>>
>> add_library( mylib-static ${BUILD_LIBTYPE} ${MYLIB_SRCS})
>>
>> HTH,
>>    Johannes
>
>
>
> --
> Take care,
> Ty
> http://tds-solutions.net
> He that will not reason is a bigot; he that cannot reason is a fool; he that
> dares not reason is a slave.
>
> --
>
> 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


More information about the CMake mailing list