arrow-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Max Risuhin (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ARROW-681) [C++] Build Arrow on Windows with dynamically linked boost
Date Wed, 22 Mar 2017 00:51:42 GMT

     [ https://issues.apache.org/jira/browse/ARROW-681?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Max Risuhin updated ARROW-681:
------------------------------
    Description: 
Currently CMake recognizes "imported" 3rd party libs as static libraries. That causes linking
issue (.obj data can't be found in stripped .lib for shared .dll, because it's in .dll) if
the library should be linked dynamically on Windows.
To resolve above incorrect behavior, IMPORTED_LOCATION property of imported library replaced
with special IMPORTED_IMPLIB. It sets cmake to handle the library as dynamic, not static.
https://cmake.org/cmake/help/v3.0/prop_tgt/IMPORTED_IMPLIB.html

Another linking issue on Windows with dynamically linked boost is caused by boost's autolinking
feature. Autolinking tells to link against static libs of boost, even if we have turned off
usage of static libs in CMAKE. The resolution is to turn off boost's autolinking by preprocessor's
defines directly from CMAKE script:

    // disable autolinking in boost
    add_definitions(-DBOOST_ALL_NO_LIB)

    // force all boost libraries to dynamic link
    add_definitions(-DBOOST_ALL_DYN_LINK)

  was:
Currently CMake recognizes "imported" 3rd party libs as static libraries. That causes linking
issue (.obj data can't be found in stripped .lib for shared .dll, because it's in .dll) if
the library should be linked dynamically on Windows.
To resolve this IMPORTED_LOCATION property of imported library replaced with special IMPORTED_IMPLIB
property. It sets cmake to handle the library as dynamic, not static. https://cmake.org/cmake/help/v3.0/prop_tgt/IMPORTED_IMPLIB.html

Another linking issue on Windows with dynamically linked boost is caused by boost's autolinking
feature. Autolinking tells to link against static libs of boost, even if we have turned off
usage of static libs in CMAKE. The resolution is to turn off boost's autolinking by preprocessor's
defines directly from CMAKE script:

    // disable autolinking in boost
    add_definitions(-DBOOST_ALL_NO_LIB)

    // force all boost libraries to dynamic link
    add_definitions(-DBOOST_ALL_DYN_LINK)


> [C++] Build Arrow on Windows with dynamically linked boost
> ----------------------------------------------------------
>
>                 Key: ARROW-681
>                 URL: https://issues.apache.org/jira/browse/ARROW-681
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: C++
>            Reporter: Max Risuhin
>
> Currently CMake recognizes "imported" 3rd party libs as static libraries. That causes
linking issue (.obj data can't be found in stripped .lib for shared .dll, because it's in
.dll) if the library should be linked dynamically on Windows.
> To resolve above incorrect behavior, IMPORTED_LOCATION property of imported library replaced
with special IMPORTED_IMPLIB. It sets cmake to handle the library as dynamic, not static.
https://cmake.org/cmake/help/v3.0/prop_tgt/IMPORTED_IMPLIB.html
> Another linking issue on Windows with dynamically linked boost is caused by boost's autolinking
feature. Autolinking tells to link against static libs of boost, even if we have turned off
usage of static libs in CMAKE. The resolution is to turn off boost's autolinking by preprocessor's
defines directly from CMAKE script:
>     // disable autolinking in boost
>     add_definitions(-DBOOST_ALL_NO_LIB)
>     // force all boost libraries to dynamic link
>     add_definitions(-DBOOST_ALL_DYN_LINK)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message