[CMake] using cmake to link window lib and dll files

Mike Jackson mike.jackson at bluequartz.net
Sun Nov 15 11:30:25 EST 2009


You might want to consider using the "find_library()" command. It
would look something like the following:

find_library (EPANET_LIB epanet2
                   PATHS   ${TEST_SOURCE_DIR}/epanet )

_________________________________________________________
Mike Jackson                  mike.jackson at bluequartz.net
BlueQuartz Software                    www.bluequartz.net
Principal Software Engineer                  Dayton, Ohio

On Sun, Nov 15, 2009 at 8:37 AM, Cheng Zhigao <ZGCHENG at ntu.edu.sg> wrote:
> Hi,
>
> I have used Cmake to build a VS2005C++ project under windows. And for the project i need to link to some external library. I can manually do it under VS2005, but i wish i could do it using cmake statement.
>
> The project name is TEST, i put the external library in a folder named ${TEST_SOURCE_DIR}/epanet/ which contains the epanet2.h epanet2.lib and epanet2.dll files. I use the Include_directories and link_directories to point to the /epanet/ folder.     And i use TARGET_LINK_LIBRARIES to link the library. However, i still have to put the full path like ${TEST_SOURCE_DIR}/epanet2/epanet2.lib to link to the library including file extension. And I do not know how to link to the epanet2.dll file. I have to manually copy the dll file in order to make the code to work otherwise it will complain cannot find the .dll file.  How can i do that in cmake so that both the .lib file and .dll file will be linked without manual actions? Thanks.
>
> Regards,
> zhigao
>
>
>
> Below is the cmake file
> =============================
>
> PROJECT(TEST)
> cmake_minimum_required(VERSION 2.6)
>
> SET(TEST_SRCS
>        ${TEST_SOURCE_DIR}/DLLTest.cpp)
>
>
> ADD_EXECUTABLE(TEST
>        ${TEST_SRCS})
>
> INCLUDE_DIRECTORIES(${TEST_SOURCE_DIR}/epanet)
> LINK_DIRECTORIES(${TEST_SOURCE_DIR}/epanet)
>
> SET(_LINK_EPANET_LIB ${TEST_SOURCE_DIR}/epanet/epanet2.lib)
>
> TARGET_LINK_LIBRARIES(TEST ${_LINK_EPANET_LIB})
>
>
> CONFIDENTIALITY: This email is intended solely for the person(s) named. The contents may be confidential and/or privileged. If you are not the intended recipient, please delete it, notify us, and do not copy or use it, nor disclose its contents. Thank you.
>
> Towards A Sustainable Earth: Print Only When Necessary
> _______________________________________________
> 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