gpt4 book ai didi

c++ - 如何编写 CmakeLists.txt 以在 c 中包含 xgboost

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:40:28 26 4
gpt4 key购买 nike

我是 Mac OS 系统的新手。最近在做一个项目,需要用xgboost用c语言进行预测。我的问题是如何正确编写 CmakeLists.txt 文件。

我是按照指导文档一步步做的。实际上,我使用以下命令正确运行了 cpp:

g++ main.c -Ixgboost/include -Ixgboost/rabit/include xgboost/lib/libxgboost.a xgboost/rabit/lib/librabit_empty.a xgboost/dmlc-core/libdmlc.a

但是,当我转向 CmakeLists.txt 时,出现了错误。这是错误代码:

dyld: Library not loaded: lib/libxgboost.dylib
Referenced from: /Users/doubleding/Documents/Develop_SCIP/tryLoadXgboost/cmake-build-debug/tryLoadXgboost
Reason: image not found

这是 CmakeLists.txt 的代码:

cmake_minimum_required(VERSION 3.12)
project(tryLoadXgboost C)

set(CMAKE_C_STANDARD 99)

include_directories(${PROJECT_SOURCE_DIR}/xgboost/include)
include_directories(${PROJECT_SOURCE_DIR}/xgboost/rabit/include)


link_directories(${PROJECT_SOURCE_DIR}/xgboost/lib)
link_directories(${PROJECT_SOURCE_DIR}/xgboost/rabit/lib)
link_directories(${PROJECT_SOURCE_DIR}/xgboost/dmlc-core) #库文件目录

add_executable(tryLoadXgboost main.c)

target_link_libraries(tryLoadXgboost libxgboost.a)
target_link_libraries(tryLoadXgboost librabit_empty.a )
target_link_libraries(tryLoadXgboost libdmlc.a)

我知道有一些关于“dyld: Library not loaded:”的话题。但我不知道如何在这个特定任务中做到这一点。另外,我不知道是不是我写cmakelists的错(因为使用g++没有报错)。如果有人能告诉我如何解决这个错误,我将不胜感激。

最佳答案

您需要找到所有的 boost 库;

$ otool -L exefile
exefile:
@executable_path/libboost_something.dylib (compatibility version 0.7.0, current version 0.7.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

对于每个 libboost_something.dylib 你都需要做

$ install_name_tool -change @executable_path/libboost_something.dylib /opt/local/lib/libboost_something.dylib exefile

如果这不起作用,您可以使用 Boost 的静态版本而不是动态版本。

set(Boost_USE_STATIC_LIBS ON)

关于c++ - 如何编写 CmakeLists.txt 以在 c 中包含 xgboost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com