[ 
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 issue, 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)

  was:
Currently CMake recognizes "imported" 3rd party libs as static libraries. That 
causes issue, 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 issue, 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)



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

Reply via email to