[CMake] Linking Behavior of Static Libraries on Windows

Ben Ratzlaff cmake at daishiva.com
Wed Mar 21 19:26:11 EST 2007


Here is how I got around what you describe. My project sounds pretty similar
in how it is set up

when building the exe:
IF (PLATFORM MATCHES "win32")
    IF (CMAKE_GENERATOR MATCHES "Visual Studio 8 2005")
        SET_TARGET_PROPERTIES (${project_exe} PROPERTIES
            LINK_FLAGS "$(TargetDir)/project_shared.lib"
        )
    ELSE (CMAKE_GENERATOR MATCHES "Visual Studio 8 2005") #nmake makefiles
        SET_TARGET_PROPERTIES (${project_exe} PROPERTIES
            LINK_FLAGS "${LIBRARY_OUTPUT_PATH}/project_shared.lib"
        )
    ENDIF (CMAKE_GENERATOR MATCHES "Visual Studio 8 2005")
ELSE (PLATFORM MATCHES "win32")
    SET_TARGET_PROPERTIES (${project_exe} PROPERTIES
        LINK_FLAGS "-L${LIBRARY_OUTPUT_PATH} -lproject_shared"
    )
ENDIF (PLATFORM MATCHES "win32")

building shared library:
IF (PLATFORM MATCHES "win32")
    # nothing
ELSE (PLATFORM MATCHES "win32")
    SET_TARGET_PROPERTIES (${project_SHARED} PROPERTIES
        PREFIX "lib"
    )
ENDIF (PLATFORM MATCHES "win32")

building a plugin:
IF (PLATFORM MATCHES "win32")
    IF (CMAKE_GENERATOR MATCHES "Visual Studio 8 2005")
        SET_TARGET_PROPERTIES (${PLUGIN_NAME} PROPERTIES
            LINK_FLAGS "$(TargetDir)/project_shared.lib"
        )
    ELSE (CMAKE_GENERATOR MATCHES "Visual Studio 8 2005") #nmake
        SET_TARGET_PROPERTIES (${PLUGIN_NAME} PROPERTIES
            LINK_FLAGS "${LIBRARY_OUTPUT_PATH}/project_shared.lib"
        )
    ENDIF (CMAKE_GENERATOR MATCHES "Visual Studio 8 2005")
ELSE (PLATFORM MATCHES "win32")
    SET_TARGET_PROPERTIES (${PLUGIN_NAME} PROPERTIES
        LINK_FLAGS "-L${LIBRARY_OUTPUT_PATH} -lproject_shared"
    )
ENDIF (PLATFORM MATCHES "win32")

exe depends on shared library
plugins depend on shared library

the plugins in my case, are the ones that depend on the third party
libraries
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/cmake/attachments/20070321/e406f7fa/attachment.html


More information about the CMake mailing list