CMake에서 GitHub에서 Boost를 가져와 정적 링크
환경
macOS 10.13.1
CMake 3.9.5
Boost 1.65.1
CLion 2017.3
프로젝트 구성
엉망이지만 다음과 같은 구성으로 cli
에 Boost 라이브러리를 정적 링크합니다.
.
├── CMakeLists.txt
├── cli
│ ├── CMakeLists.txt
│ └── cli.cpp
└── vendor
└── boost
└── boost.cmake
CMakeLists.txt를 작성하는 방법
프로젝트 루트의 CMakeLists.txt에 대한 설명은 다음과 같습니다 (일부 생략 됨). 중요한 것은 include(ExternalProject)
로, 이것을 기재하는 것으로 외부로부터 Boost 를 받아들일 수 있게 됩니다.
cmake_minimum_required(VERSION 3.9.5)
...(省略)...
add_subdirectory(cli)
...(省略)...
include(ExternalProject)
include(${PROJECT_SOURCE_DIR}/vendor/boost/boost.cmake)
또한 ./vendor/boost/boost.cmake
의 내용은 다음과 같습니다.
set(Boost_Bootstrap_Command ./bootstrap.sh)
set(Boost_b2_Command ./b2 toolset=clang install
--prefix=${CMAKE_BINARY_DIR}/INSTALL
--threading=single,multi
--link=static
--variant=debug
--address-model=64
--stagedir=stage/x64
-j2
)
ExternalProject_Add(boost
GIT_REPOSITORY https://github.com/boostorg/boost.git
GIT_TAG boost-1.65.1
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ${Boost_Bootstrap_Command}
BUILD_COMMAND ${Boost_b2_Command}
INSTALL_COMMAND ""
PATCH_COMMAND ""
UPDATE_COMMAND ""
INSTALL_DIR ${CMAKE_BINARY_DIR}/INSTALL
)
INSTALL_DIR
를 지정하여 프로젝트에 Boost 라이브러리를 설치하려고합니다. 또, b2
의 옵션에 대해서는 boostjp 이나 장부 st. 오 rg 를 참고로 했습니다. GitHub에 게시된 CMake 프로젝트에서도 많은 것을 배울 수 있다고 생각합니다. 마지막으로 ./cli/CMakeLists.txt
의 내용입니다.
set(SOURCE_FILES cli.cpp)
add_executable(cli ${SOURCE_FILES})
add_dependencies(cli boost)
set(BOOST_LIBRARIES
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_atomic.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_date_time.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_regex.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_serialization.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_system.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_thread.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_wserialization.a
)
include_directories(${CMAKE_BINARY_DIR}/INSTALL/include)
target_link_libraries(cli PRIVATE ${BOOST_LIBRARIES})
target_link_libraries
에서 cli
에 Boost 라이브러리를 연결합니다.
요약
Boost.Asio 등을 사용하고 싶은 경우는 상기의 수속만으로는 대응할 수 없습니다. 헤더 파일을 빌드 디렉토리(내 환경이라면 ./cmake-build-debug/boost-prefix/src/boost
가 됩니다)에서 설치 디렉토리에 복사해 줄 필요가 있습니다(왜 설치되지 않는지는 수수께끼···).
보이는 보이지 않고 쓰고 있기 때문에, 이상한 부분도 많다고 생각합니다. 나와 마찬가지로 CMake를 잘 모르겠습니다.
Reference
이 문제에 관하여(CMake에서 GitHub에서 Boost를 가져와 정적 링크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/42milez/items/3c091bb30c5e68f18f48
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
엉망이지만 다음과 같은 구성으로
cli
에 Boost 라이브러리를 정적 링크합니다..
├── CMakeLists.txt
├── cli
│ ├── CMakeLists.txt
│ └── cli.cpp
└── vendor
└── boost
└── boost.cmake
CMakeLists.txt를 작성하는 방법
프로젝트 루트의 CMakeLists.txt에 대한 설명은 다음과 같습니다 (일부 생략 됨). 중요한 것은 include(ExternalProject)
로, 이것을 기재하는 것으로 외부로부터 Boost 를 받아들일 수 있게 됩니다.
cmake_minimum_required(VERSION 3.9.5)
...(省略)...
add_subdirectory(cli)
...(省略)...
include(ExternalProject)
include(${PROJECT_SOURCE_DIR}/vendor/boost/boost.cmake)
또한 ./vendor/boost/boost.cmake
의 내용은 다음과 같습니다.
set(Boost_Bootstrap_Command ./bootstrap.sh)
set(Boost_b2_Command ./b2 toolset=clang install
--prefix=${CMAKE_BINARY_DIR}/INSTALL
--threading=single,multi
--link=static
--variant=debug
--address-model=64
--stagedir=stage/x64
-j2
)
ExternalProject_Add(boost
GIT_REPOSITORY https://github.com/boostorg/boost.git
GIT_TAG boost-1.65.1
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ${Boost_Bootstrap_Command}
BUILD_COMMAND ${Boost_b2_Command}
INSTALL_COMMAND ""
PATCH_COMMAND ""
UPDATE_COMMAND ""
INSTALL_DIR ${CMAKE_BINARY_DIR}/INSTALL
)
INSTALL_DIR
를 지정하여 프로젝트에 Boost 라이브러리를 설치하려고합니다. 또, b2
의 옵션에 대해서는 boostjp 이나 장부 st. 오 rg 를 참고로 했습니다. GitHub에 게시된 CMake 프로젝트에서도 많은 것을 배울 수 있다고 생각합니다. 마지막으로 ./cli/CMakeLists.txt
의 내용입니다.
set(SOURCE_FILES cli.cpp)
add_executable(cli ${SOURCE_FILES})
add_dependencies(cli boost)
set(BOOST_LIBRARIES
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_atomic.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_date_time.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_regex.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_serialization.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_system.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_thread.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_wserialization.a
)
include_directories(${CMAKE_BINARY_DIR}/INSTALL/include)
target_link_libraries(cli PRIVATE ${BOOST_LIBRARIES})
target_link_libraries
에서 cli
에 Boost 라이브러리를 연결합니다.
요약
Boost.Asio 등을 사용하고 싶은 경우는 상기의 수속만으로는 대응할 수 없습니다. 헤더 파일을 빌드 디렉토리(내 환경이라면 ./cmake-build-debug/boost-prefix/src/boost
가 됩니다)에서 설치 디렉토리에 복사해 줄 필요가 있습니다(왜 설치되지 않는지는 수수께끼···).
보이는 보이지 않고 쓰고 있기 때문에, 이상한 부분도 많다고 생각합니다. 나와 마찬가지로 CMake를 잘 모르겠습니다.
Reference
이 문제에 관하여(CMake에서 GitHub에서 Boost를 가져와 정적 링크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/42milez/items/3c091bb30c5e68f18f48
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
cmake_minimum_required(VERSION 3.9.5)
...(省略)...
add_subdirectory(cli)
...(省略)...
include(ExternalProject)
include(${PROJECT_SOURCE_DIR}/vendor/boost/boost.cmake)
set(Boost_Bootstrap_Command ./bootstrap.sh)
set(Boost_b2_Command ./b2 toolset=clang install
--prefix=${CMAKE_BINARY_DIR}/INSTALL
--threading=single,multi
--link=static
--variant=debug
--address-model=64
--stagedir=stage/x64
-j2
)
ExternalProject_Add(boost
GIT_REPOSITORY https://github.com/boostorg/boost.git
GIT_TAG boost-1.65.1
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ${Boost_Bootstrap_Command}
BUILD_COMMAND ${Boost_b2_Command}
INSTALL_COMMAND ""
PATCH_COMMAND ""
UPDATE_COMMAND ""
INSTALL_DIR ${CMAKE_BINARY_DIR}/INSTALL
)
set(SOURCE_FILES cli.cpp)
add_executable(cli ${SOURCE_FILES})
add_dependencies(cli boost)
set(BOOST_LIBRARIES
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_atomic.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_date_time.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_regex.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_serialization.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_system.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_thread.a
${CMAKE_BINARY_DIR}/INSTALL/lib/libboost_wserialization.a
)
include_directories(${CMAKE_BINARY_DIR}/INSTALL/include)
target_link_libraries(cli PRIVATE ${BOOST_LIBRARIES})
Boost.Asio 등을 사용하고 싶은 경우는 상기의 수속만으로는 대응할 수 없습니다. 헤더 파일을 빌드 디렉토리(내 환경이라면
./cmake-build-debug/boost-prefix/src/boost
가 됩니다)에서 설치 디렉토리에 복사해 줄 필요가 있습니다(왜 설치되지 않는지는 수수께끼···).보이는 보이지 않고 쓰고 있기 때문에, 이상한 부분도 많다고 생각합니다. 나와 마찬가지로 CMake를 잘 모르겠습니다.
Reference
이 문제에 관하여(CMake에서 GitHub에서 Boost를 가져와 정적 링크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/42milez/items/3c091bb30c5e68f18f48텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)