[CMake] Compiling dll under MSVC 2008
Tyler Roscoe
tyler at cryptio.net
Fri Apr 17 11:06:11 EDT 2009
Guess I'll top-post too...
Mike, that article is helpful and OP should definitely read it.
Benoit, I think the specific problem you are having is that you are
setting RUNTIME_ and LIBRARY_OUTPUT_DIRECTORY but not
ARCHIVE_OUTPUT_DIRECTORY. From the docs:
"For DLL platforms the DLL part of a shared library is treated as a
runtime target and the corresponding import library is treated as an
archive target."
I bet you'll find cv7core.lib in your CMAKE_BINARY_DIRECTORY.
hth,
tyler
On Thu, Apr 16, 2009 at 01:48:03PM -0400, Mike Jackson wrote:
> You will want to read this link
> <http://www.cmake.org/Wiki/BuildingWinDLL>
>
> which should explain everything you need to know.
>
> Mike Jackson
>
> PS: Feedback on that article is also welcome.
>
> On Thu, Apr 16, 2009 at 1:39 PM, Benoit <benpaka.spam at gmail.com> wrote:
> > Hello,
> >
> > I've a problem when using libraries under MS Visual C++ 2008 Express Edition
> > but it works fine with GCC and MinGW.
> >
> > I have first create a core (cv7core) library that compile correctly (I
> > obtain cv7core.dll), however I doesn't create the static lib.
> > Then I create another library that use the first one but it doesn't compile
> > because it doesn't find the cv7core.lib:
> >
> > LINK : fatal error LNK1104: no se puede abrir el archivo
> > '..\cv7core\Debug\cv7core.lib'
> >
> > My CmakeLists.txt have the following interesant part:
> >
> >
> > ------------------------------------------------------------------------------
> > ./CmakeLists.txt:
> > ------------------------------------------------------------------------------
> > ...
> > ## On DLL platform put also *.dll
> > SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
> > ${PROJECT_INSTALL_PATH}/bin
> > CACHE PATH
> > "Single Directory for all Executables and DLL."
> > )
> >
> > ## Otherwise put library in lib folder.
> > SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
> > ${PROJECT_INSTALL_PATH}/lib
> > CACHE PATH
> > "Single Directory for all Libraries"
> > )
> > ...
> >
> >
> > ------------------------------------------------------------------------------
> > ./src/cv7core/CmakeLists.txt:
> > ------------------------------------------------------------------------------
> > set(LIBNAME "cv7core")
> > set(SRC_FILES cv7BGModel.c cv7ConCompo.c ...)
> > include_directories(${OpenCV_INCLUDE_DIRS})
> > include_directories(${PROJECT_SOURCE_DIR}/include/${LIBNAME})
> >
> > # change lib_target properties
> > SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES
> > VERSION ${${PROJECT_NAME}_MINOR_VERSION}
> > SOVERSION ${${PROJECT_NAME}_MINOR_VERSION}
> > #CLEAN_DIRECT_OUTPUT 1 # avoid conflicts between library and binary target
> > names
> > #OUTPUT_NAME ${LIBNAME} # allow creating static and shared libs without
> > conflicts
> > )
> >
> >
> > It is maybe a very stupid things but i'm not microsoft friendly and it is
> > the first time i use the MSVC compilator
> >
> > --
> > Benoit RAT
> > www.neub.co.nr
> >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the CMake FAQ at:
> > http://www.cmake.org/Wiki/CMake_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.cmake.org/mailman/listinfo/cmake
> >
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
More information about the CMake
mailing list