cotire icon indicating copy to clipboard operation
cotire copied to clipboard

Problem with Windows system include headers

Open Pwera opened this issue 7 years ago • 0 comments

Hello, i'm moving ActiveMQ-cpp library into CMake, without PCH library builds fine, but if i enable Cotire it adds into Decaf_CXX_prefix.h headers like Windows.h, WinSock2.h, WS2tcpip.h and compiler throw errors like (redefinitions):

 C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(217): error C2011:
 C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(414): error C2059:
 C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(414): error C3805:
 C:\Program Files (x86)\Windows Kits\8.1\Include\shared\ws2def.h(608): error C2011:
 C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(125): error C2011: 
 C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h(169): error C2011: 

project CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(ActiveMqTraining C CXX)
SET(CMAKE_CXX_STANDARD 11)

option(BUILD_EXAMPLES "Build Example applications" FALSE)
option(BUILD_TESTS "Build Test applications" FALSE)
option(CMAKE_VERBOSE_MAKEFILE "Use verbose output" TRUE)

set(COTERIZE_BUILD TRUE)
set(COTIRE_DEBUG TRUE)
set(COTIRE_VERBOSE TRUE)
set(COTIRE_MINIMUM_NUMBER_OF_TARGET_SOURCES 1)
if(DEFINED COTERIZE_BUILD)
    include(cotire)
endif()

find_package(APR 1.0.0 REQUIRED)
find_package(Threads REQUIRED)

file(GLOB_RECURSE SOURCES ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/security/ServiceRegistry.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/concurrent/windows/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemqES
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/io/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/net/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/nio/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/security/provider/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/security/windows/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/security/Engine.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/security/SecurityRuntime.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cp-cpp/src/main/decaf/internal/util/concurrent/ExecutorsSupport.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/concurrent/SynchronizableImpl.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/concurrent/Threading.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/concurrent/ThreadLocalImpl.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/zip/*.c
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/ByteArrayAdapter.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/GenericResource.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/HexStringParser.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/Resource.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/ResourceLifecycleManager.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/StringUtils.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/util/TimerTaskHeap.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/AprPool.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/internal/DecafRuntime.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/io/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/lang/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/net/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/nio/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/security/*.cpp
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/decaf/util/*.cpp
        )

file(GLOB_RECURSE ActiveMq_SOURCES
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/activemq/*.cpp
        )
file(GLOB_RECURSE Cms_SOURCES
        ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main/cms/*.cpp
        )

######################  LIBRARY SECTION  ###################################

set(DECAF_UTIL_PATH ${CMAKE_SOURCE_DIR}/external/activemq-cpp/activemq-cpp/src/main)
add_library(Decaf STATIC ${SOURCES} ${ActiveMq_SOURCES} ${Cms_SOURCES})
target_include_directories(Decaf
        PUBLIC
        $<BUILD_INTERFACE:${DECAF_UTIL_PATH}>)

if(MSVC)
    target_compile_options(Decaf PUBLIC /wd4101 /wd4005)
endif()

target_link_libraries(Decaf PUBLIC APR::libapr-2)
if(DEFINED COTERIZE_BUILD)
    set_target_properties(Decaf PROPERTIES
            COTIRE_ADD_UNITY_BUILD FALSE) "${APR_INCLUDE_DIR}")

            cotire(Decaf)

endif()

######################  EXAMPLES SECTION  ###################################

if (BUILD_EXAMPLES)
    function(ActiveMqSample name sourceList)
        add_executable(${name} ${sourceList})
        target_link_libraries(${name} PUBLIC ${APR_LIBRARIES} Decaf)
        target_include_directories(${name}
                PRIVATE
                $<BUILD_INTERFACE:${DECAF_UTIL_PATH}>
                $<BUILD_INTERFACE:${APR_INCLUDE_DIR}>)

    endfunction(ActiveMqSample)
ActiveMqSample(AdvisoryConsumer "${DECAF_UTIL_PATH}/../examples/advisories/AdvisoryConsumer.cpp;${DECAF_UTIL_PATH}/../examples/advisories/AdvisoryConsumerMain.cpp")
ActiveMqSample(AdvisoryProducer "${DECAF_UTIL_PATH}/../examples/advisories/AdvisoryProducer.cpp;${DECAF_UTIL_PATH}/../examples/advisories/AdvisoryProducerMain.cpp")
ActiveMqSample(TempDestinationAdvisoryProducer "${DECAF_UTIL_PATH}/../examples/advisories/TempDestinationAdvisoryProducerMain.cpp")
ActiveMqSample(TempDestinationAdvisoryConsumer "${DECAF_UTIL_PATH}/../examples/advisories/TempDestinationAdvisoryConsumer.cpp;${DECAF_UTIL_PATH}/../examples/advisories/TempDestinationAdvisoryConsumerMain.cpp")
ActiveMqSample(CmsTemplateReceiver "${DECAF_UTIL_PATH}/../examples/cmstemplate/CMSTemplateReceiver.cpp")
ActiveMqSample(CmsTemplateSender "${DECAF_UTIL_PATH}/../examples/cmstemplate/CMSTemplateSender.cpp")
endif ()

Decaf_CXX_prefix.h Cotire will generate

/* cotire.cmake 1.7.10 generated file */
/* D:/libs/ActiveMqCppTraining/msvcV3/Debug/cotire/Decaf_CXX_prefix.hxx */
#pragma warning(push, 0)
#ifdef __cplusplus
#include "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stddef.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\Windows.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\WS2tcpip.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\MSWSock.h"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\string"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\vector"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\iostream"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\sstream"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\algorithm"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\memory"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\functional"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\map"
#include "C:\lib2\msvc\include\apr_pools.h"
#include "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\process.h"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\list"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\set"
#include "C:\lib2\msvc\include\apr_signal.h"
#include "C:\lib2\msvc\include\apr_portable.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\wincrypt.h"
#include "C:\lib2\msvc\include\apr_strings.h"
#include "C:\lib2\msvc\include\apr_env.h"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\deque"
#include "C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\assert.h"
#include "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include\iomanip"
#endif
#pragma warning(pop)

When i explicit remove headers:

#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\Windows.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\WinSock2.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\WS2tcpip.h"
#include "C:\Program Files (x86)\Windows Kits\8.1\Include\um\MSWSock.h"

build go fine again. This headers comes from apr. How to debug/fix this? Thanks.

Pwera avatar Feb 12 '18 19:02 Pwera