tôi có các thiết lập sau đây cho ++ phát triển C:Làm thế nào để đưa thư viện bên ngoài (boost) vào dự án CLion C++ với CMake?
OS X Yosemite
CLion 140.2310.6
(chéo plattform C/C++ - IDE bởi JetBrains sử dụngCMake
như xây dựng hệ thống)- cài đặt
boost
quabrew install boost
vào/usr/local/Cellar/boost/
Bây giờ, mục tiêu của tôi là thiết lập một dự án đơn giản và bao gồm thư viện boost
. Tôi định nghĩa chỉ là một test.cpp tập tin đó trông như thế này:
#include <iostream>
#include <boost>
using namespace std;
int test() {
cout << "Hello, World!" << endl;
return 0;
}
CMakeLists.txt tập tin của tôi trông như thế này:
cmake_minimum_required(VERSION 2.8.4)
project(MyProject)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories("/usr/local/Cellar/boost/1.57.0/include/boost")
set(SOURCE_FILES main.cpp ./test.cpp)
add_executable(MyProject ${SOURCE_FILES})
Khi tôi xây dựng dự án, tôi nhận được sau lỗi:
/Users/nburk/Documents/uni/master/master_thesis/MyProject/test.cpp:2:10: fatal error: 'boost' file not found
make[3]: *** [CMakeFiles/MyProject.dir/test.cpp.o] Error 1 make[2]: *** [CMakeFiles/MyProject.dir/all] Error 2 make[1]: *** [CMakeFiles/MyProject.dir/rule] Error 2 make: *** [MyProject] Error 2
Tôi đã chơi xung quanh với điều chỉnh đường dẫn ở đây và ở đó và cũng sử dụng add_library
và target_link_libraries
, không ai trong số đó làm cho dự án xây dựng thành công.
Ai đó có thể chỉ đúng hướng để đảm bảo rằng tôi có thể đưa chức năng boost
vào dự án CLION C++ của tôi không?
Cập nhật: Nhờ @ câu trả lời Waxo của tôi đã sử dụng đoạn mã sau vào CMakeLists.txt tập tin của tôi đó:
set(Boost_INCLUDE_DIR /usr/local/Cellar/boost/1.57.0)
set(Boost_LIBRARY_DIR /usr/local/Cellar/boost/1.57.0/lib)
find_package(Boost COMPONENTS system filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
bây giờ tôi lừa bóng qua các tập tin không tìm thấy-lỗi, nhưng thay vào đó tôi nhận được thông tin sau:
CMake Error at /Applications/CLion EAP.app/Contents/bin/cmake/share/cmake-3.1/Modules/FindBoost.cmake:685 (file):
file STRINGS file "/usr/local/Cellar/boost/1.57.0/boost/version.hpp" cannot be read.
Call Stack (most recent call first): CMakeLists.txt:11 (find_package)
Bất kỳ ý tưởng nào tôi vẫn còn thiếu? Điểm mấu gọi (685) trong FindBoost.cmake là: file(STRINGS "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS REGEX "#define BOOST_(LIB_)?VERSION ")
Đừng đặt những 'biến Boost' bằng tay. 'find_package' sẽ hoạt động ra khỏi hộp. Nếu không, bạn nên chuyển 'Boost_DIR' thành' cmake'command. Không viết đường dẫn hệ thống cụ thể trong CMakeLists.txt. Toàn bộ điểm của cmake là nền tảng chéo. Cấu hình nền tảng cụ thể nên hiếm khi được yêu cầu, và nếu đó là cách để làm điều đó là để vượt qua các thông số cấu hình thông qua dòng lệnh hoặc thông qua cmake-gui. – sbabbi
nếu tôi không bao gồm nó, tôi nhận được trở lại ** tập tin không tìm thấy ** - lỗi ... tuy nhiên, tôi chắc chắn rằng tôi thiếu cái gì khác và tư vấn của bạn có vẻ hợp lý với tôi! vấn đề chính của tôi là tôi không hiểu một số vấn đề cơ bản về cách CMake thực sự hoạt động, vì vậy tôi đoán mình phải ngồi xuống và làm bài tập ở nhà vì tôi không thể tìm ra một giải pháp tầm thường ... – nburk
Tôi nhận thấy bây giờ cài đặt tăng cường của bạn nằm trong đường dẫn không chuẩn ('/ usr/local/cellar'). [Cách thích hợp] (http://www.cmake.org/cmake/help/v3.0/module/FindBoost.html) để thông báo cho cmake tìm kiếm tăng trong thư mục đó là gọi cmake với 'cmake -DBOOST_ROOT = /usr/local/Cellar/boost/1.57.0 ... ' – sbabbi