Hi Karel,

I've noticed a few points where you could start looking for a solution:

* You're mentioning that CMake warns about some linking stuff, but the
compiler error is one about including a header file. Libraries and headers
are fundamentally different objects: header files are used by the compiler,
libraries are used by the linker.

* Regarding the linking thing:

AVRO_LIBRARY            - The Avro C++ libraries

Yet you seem to be setting this to a directory:

set(AVRO_LIBRARY
D:/kuleuven/thesis/kaa/kaaBuild/avro_1.8.0/lang/c++/build.win)

when you're supposed to set it to a library (.lib file).

* As for the header issue, you're setting:

set(AVRO_INCLUDE_DIR
D:/kuleuven/thesis/kaa/kaaBuild/avro_1.8.0/lang/c++/avro)

but then using:

include_directories (
                     ${AVRO_INCLUDE_DIRS}
                     )

Note the difference in the trailing 'S'.

* Additionally, variables like AVRO_INCLUDE_DIR and AVRO_LIBRARY look like
something the find package should be setting *for* you. It doesn't seem
like a package shipped with CMake, so consult its docs to check you're
using it as intended.

Petr

On Wed, Mar 30, 2016 at 5:15 PM, Karel Geiregat <karelgeire...@gmail.com>
wrote:

> Dear users at Cmake
>
>
> It could be that I don't have understood the linking process when building
> the project by cmake. The project has three dependencies: (1) Boost, (2)
> (Apache) Avro and (3) Botan.
> After issuing the following command to be able to use the nmake command
> from Visual Studio:
>
> D:\...\build>cmake -G "NMake Makefiles" -DKAA_INSTALL_PATH="D:\kaa\kaaSDK"
>> -DKAA_DEBUG_ENABLED=1 ..
>>
>
> It ran without problems, except minor warnings like
>
> WARNING: Target "kaacpp" requests linking to directory
>> "D:/kaa/kaaBuild/avro_1.8.0/lang/c++/build.win".  Targets may link only to
>> libraries.  CMake is dropping the item.
>>
> => note: full log is at the bottom of this mail (appendix 1).
>
> but when i call nmake after, it immediately throws up error:
>
> D:\...\build>nmake
>>
>> Microsoft (R) Program Maintenance Utility Version 14.00.23506.0
>> Copyright (C) Microsoft Corporation.  All rights reserved.
>>
>> Scanning dependencies of target kaacpp_o
>> [  1%] Building CXX object
>> CMakeFiles/kaacpp_o.dir/impl/event/registration/EndpointRegistrationManager.cpp.obj
>> EndpointRegistrationManager.cpp
>> D:\kaa\kaa-cpp-ep-sdk-aXrMkhHEE2BrPBehV_Vbxym2MfU\kaa/gen/EndpointGen.hpp(26):
>> fatal error C1083: Cannot open include file: 'avro/Specific.hh': No such
>> file or directory
>> NMAKE : fatal error U1077: 'C:\PROGRA~2\VISUAL~1.0\VC\bin\cl.exe' :
>> return code '0x2'
>> Stop.
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Visual Studio
>> 14.0\VC\BIN\nmake.exe"' : return code '0x2'
>> Stop.
>>
>
> I have checked the file, and there is the following includes
>
> #include <sstream>
>> #include "boost/any.hpp"
>> #include "avro/Specific.hh" <-------- error line
>> #include "avro/Encoder.hh"
>> #include "avro/Decoder.hh"
>>
>
> My idea is that the linking of the avro library is not set up correctly
> since the error got thrown after including a Boost file.
> Here is a fragment of my cmakelists.txt file where Avro got added and how
> the packages got found/added
>
> #  AVRO_ROOT_DIR           - Set this variable to the root installation
>> of  Avro C++ if the module has problems finding the proper installation
>> path.
>> #  AVRO_LIBRARY            - The Avro C++ libraries
>> #  AVRO_INCLUDE_DIR        - The location of Avro C++ headers
>> set(AVRO_ROOT_DIR D:/kuleuven/thesis/kaa/kaaBuild/avro_1.8.0/lang/c++)
>> set(AVRO_LIBRARY
>> D:/kuleuven/thesis/kaa/kaaBuild/avro_1.8.0/lang/c++/build.win)
>> set(AVRO_INCLUDE_DIR
>> D:/kuleuven/thesis/kaa/kaaBuild/avro_1.8.0/lang/c++/avro)
>>
>
>>
> some contents omitte
>>
>
>>
> #
>> # Find third-party dependencies
>> #
>> find_package (Boost 1.54 REQUIRED COMPONENTS log system thread)
>> find_package (Avro REQUIRED)
>> find_package (Botan REQUIRED)
>>
> => note: full cmakelist.txt file is added as appendix2
>
>
> After that, i have issued the following messaging
>
> message("--- AVRO: Found? " ${AVRO_FOUND}) <----- displays "--- AVRO:
>> Found? TRUE"
>> message(${AVRO_LIBRARIES}) <----- displays "
>> D:/kaa/kaaBuild/avro_1.8.0/lang/c++/build.win"
>
>
>
> So, the library can be found. However, it surprises me that the specific
> file, Specific.hh could not be found while it is in the include directory,
> AVRO_INCLUDE_DIR (according to the findavrocpp.cmake
> <https://github.com/Produban/log2kafka/blob/master/cmake/FindAvroCPP.cmake#L33>
> it's used for headers).
> I have issued the following PowerShell command to show that the file is in
> the given directory
>
> PS D:\kaa\kaaBuild\avro_1.8.0\lang\c++\avro> Get-childitem Specific.hh
>>
>>     Directory: D:\kaa\kaaBuild\avro_1.8.0\lang\c++\avro
>>
>> Mode                LastWriteTime         Length Name
>> ----                -------------         ------ ----
>> -a----         2/9/2012   7:11 PM           7428 Specific.hh
>>
>
>
> So it could be that it is not linking correctly. Is the cmakelist.txt
> incorrect or is cmake unable to link the right header file without throwing
> an error ?
> Is there a solution for this ? I don't have a clue where to find the cause
> of the linking problems so i can solve it.
>
> If you need more information, please check the appendix 1 & 2 here below.
> If these isn't sufficient enough, please inform me which information i can
> provide.
>
> Sincerely
> - kg
>
>
>
> *APPENDIX 1: output of cmake command*
>
> D:\kaa\kaa-cpp-ep-sdk-aXrMkhHEE2BrPBehV_Vbxym2MfU\build>cmake -G "NMake
>> Makefiles" -DKAA_INSTALL_PATH="D:\kaa\kaaSDK" -DKAA_DEBUG_ENABLED=1 ..
>> ==================================
>> CMake Warning (dev) at CMakeLists.txt:73 (if):
>>   Policy CMP0054 is not set: Only interpret if() arguments as variables or
>>   keywords when unquoted.  Run "cmake --help-policy CMP0054" for policy
>>   details.  Use the cmake_policy command to set the policy and suppress
>> this
>>   warning.
>>
>>   Quoted variables like "MSVC" will no longer be dereferenced when the
>> policy
>>   is set to NEW.  Since the policy is not set the OLD behavior will be
>> used.
>> This warning is for project developers.  Use -Wno-dev to suppress it.
>>
>> ==================================
>> KAA_MAX_LOG_LEVEL=6
>> EVENTS ENABLED
>> NOTIFICATIONS ENABLED
>> CONFIGURATION ENABLED
>> LOGGING ENABLED
>> OPERATION_TCP_CHANNEL ENABLED
>> OPERATION_LONG_POLL_CHANNEL ENABLED
>> OPERATION_HTTP_CHANNEL ENABLED
>> BOOTSTRAP_HTTP_CHANNEL ENABLED
>> CONNECTIVITY_CHECKER ENABLED
>> KAA_THREADSAFE ENABLED
>> ==================================
>> -- Boost version: 1.60.0
>> -- Found the following Boost libraries:
>> --   log
>> --   system
>> --   thread
>> --   date_time
>> --   log_setup
>> --   filesystem
>> --   regex
>> --   chrono
>> --   atomic
>>
>> Looking for Avro C++ headers and libraries
>> -- Root dir: D:/kaa/kaaBuild/avro_1.8.0/lang/c++
>> -- Include directories: D:/kaa/kaaBuild/avro_1.8.0/lang/c++/avro
>> -- Libraries: D:/kaa/kaaBuild/avro_1.8.0/lang/c++/build.win
>> -- FindBotan check
>> -- BOTAN_HOME is not empty: "D:/kaa/kaaBuild/botan-1.11.29"
>> -- Looking for botan in D:/kaa/kaaBuild/botan-1.11.29
>> -- Include directory: D:/kaa/kaaBuild/botan-1.11.29/build/include
>> -- Library: D:/kaa/kaaBuild/botan-1.11.29/botan.lib
>>
>> checking libraries
>> --- BOTAN: Found? YES
>> D:/kaa/kaaBuild/botan-1.11.29/botan.lib
>> --- AVRO: Found? TRUE
>> D:/kaa/kaaBuild/avro_1.8.0/lang/c++/build.win
>> --- BOOST: Found?
>>
>> optimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_log-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_log-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_system-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_system-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_thread-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_thread-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_date_time-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_date_time-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_log_setup-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_log_setup-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_filesystem-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_filesystem-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_regex-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_regex-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_chrono-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_chrono-vc140-mt-gd-1_60.liboptimizedD:/software/boost_1_60_32/lib32-msvc-14.0/boost_atomic-vc140-mt-1_60.libdebugD:/software/boost_1_60_32/lib32-msvc-14.0/boost_atomic-vc140-mt-gd-1_60.lib
>> done checking libraries
>>
>> -- KAA WILL BE INSTALLED TO C:/Program Files (x86)/Kaa-cpp
>> -- Configuring done
>> WARNING: Target "kaacpp" requests linking to directory
>> "D:/kaa/kaaBuild/avro_1.8.0/lang/c++/build.win".  Targets may link only to
>> libraries.  CMake is dropping the item.
>> -- Generating done
>> -- Build files have been written to:
>> D:/kaa/kaa-cpp-ep-sdk-aXrMkhHEE2BrPBehV_Vbxym2MfU/build
>>
>
>
>
> *APPENDIX 2: cmakelists.txt file*
>
> File consists of 300+ lines, so uploaded it. See upload on my google
> drive: https://drive.google.com/open?id=0B-1WvUfrCC3MUHR5dGZmVUdhY0U
>
>
>
> // EOF
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
>
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to