[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