[CMake] Linking Behavior of Static Libraries on Windows

bpwlist at cox.net bpwlist at cox.net
Thu Mar 22 10:47:43 EST 2007


err, actually this doesn't seem to work either.  CMake doesn't seem to honor the LINK_FLAGS property when linking a statis library.

Bryan

---- bpwlist at cox.net wrote: 
> I think this will work for what a need to do now, but it seems to be awful lot of work for something that should be pretty straight forward to do.  Would it be worthwhile to rethink how CMake links static libraries under windows?
> 
> Bryan Walsh
> 
> ---- Ben Ratzlaff <cmake at daishiva.com> wrote: 
> > 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
> 
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake



More information about the CMake mailing list