[CMake] TARGET_LINK_LIBRARIES got a link error

Jean-Christophe Fillion-Robin jchris.fillionr at kitware.com
Fri Apr 12 03:01:31 EDT 2013


Hi Lloyd,

Seems you have a small typo, target name case should be consistent.

Try to use:

   TARGET_LINK_LIBRARIES(Tutorial Reverse)

instead of

   TARGET_LINK_LIBRARIES(Tutorial reverse)

Hth
Jc


On Fri, Apr 12, 2013 at 2:48 AM, Lloyd <lloydkl.tech at gmail.com> wrote:

>
>
>
> On Fri, Apr 12, 2013 at 11:58 AM, Rolf Eike Beer <eike at sf-mail.de> wrote:
>
>> Lloyd wrote:
>> > Hi,
>> >
>> > I am new to Cmake and at present exploring its features for migrating
>> our
>> > projects build system to use it.
>> >
>> > I have main source folder inside that another folder contains the source
>> > for our custom library.
>> >
>> > I understand that the problem is with my cmake file. Through that the
>> > generated project cannot locate the location of my library build
>> location.
>> > What is the right way to solve this kind of problem?
>> >
>> > Thanks,
>> >   Lloyd
>> >
>> > As a sample I am including my Cmake code
>> >
>> > #Cmake file of library source code
>> > #Path-> Myproject/src/lib/reverse
>> >
>> > cmake_minimum_required (VERSION 2.6)
>> >
>> > if(WIN32)
>> > SET (REV_SRC reverse.cpp reverse.h)
>> > else(WIN32)
>> > SET (REV_SRC reverse.cpp)
>> > endif(WIN32)
>>
>> There is no reason for this. CMake knows that it does not have to compile
>> header files, so it wont add compile rules for them e.g. in Makefiles.
>> Just
>> always add them to the project, this has some additional benefits for
>> generated headers and the like.
>>
>
>
> You mean the "if(WIN32)" clause and the addition of "reverse.h" in SET
> (REV_SRC reverse.cpp reverse.h)? Otherwise I think visual studio projects
> wont add the header file to the solution's source file hierarchy.
>
>
>
>>
>> > ADD_DEFINITIONS(-DREVERSE_EXPORTS)
>> >
>> > ADD_LIBRARY(Reverse SHARED ${REV_SRC})
>> >
>> >
>> >
>> > This is my CMake file inside the Src folder
>> >
>> > #Cmake file of main source code
>> > #Path-> Myproject/src/
>> > cmake_minimum_required (VERSION 2.6)
>> >
>> > FIND_PACKAGE(Qt4 REQUIRED)
>> > INCLUDE(${QT_USE_FILE})
>> > INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib/reverse)
>> >
>> > ADD_SUBDIRECTORY(lib/reverse)
>> >
>> > ADD_EXECUTABLE(Tutorial main.cpp)
>> >
>> > TARGET_LINK_LIBRARIES(Tutorial ${QT_LIBRARIES})
>> > #############################################################
>> > #I understand that the problem is here, because it cant locate my
>> library.
>> > TARGET_LINK_LIBRARIES(Tutorial reverse)
>> > #############################################################
>>
>> You just need to make sure that it goes into the lib folder first, before
>> going into src. So the top level CMakeLists.txt should have
>>
>> add_subdirectory(lib)
>> # or lib/reverse above, depending if you have something in lib/
>> add_subdirectory(src)
>>
>
> I tried in the way you have mentioned, but the error persists (fatal error
> LNK1104: cannot open file 'reverse.lib') . I have also removed the entry
> for adding subdirectory (the lib/reverse)  in my src folder's cmake file (
> ADD_SUBDIRECTORY(lib/reverse)). The following is my main cmake file
>
> #Root cmake file
> cmake_minimum_required (VERSION 2.6)
> PROJECT (Tutorial)
>
> ADD_SUBDIRECTORY(src/lib/reverse)
> ADD_SUBDIRECTORY(src)
>
> SET (DO_TEST false CACHE BOOL "Enable Testing?")
> if(DO_TEST)
> ENABLE_TESTING()
> ADD_SUBDIRECTORY(tests)
> endif(DO_TEST)
>
>
> Thank you very much,
>   Lloyd
>
>
>>
>> Eike
>> --
>>
>> --
>>
>> 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
>



-- 
+1 919 869 8849
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20130412/fbe91254/attachment-0001.htm>


More information about the CMake mailing list