无法在主要外部访问 Lib boost
Lib boost not being accessible outside main
我正尝试在我的项目中使用 Boost,但它只能在 main.cpp
内部访问。如果我尝试将它包含在另一个文件中,则会出现错误。我不知道它是否必须在 CMakeLists.txt
.
中指定
# CMakeLists.txt
...
include (cmake/CPM.cmake)
CPMAddPackage(
NAME PackageProject.cmake
GITHUB_REPOSITORY TheLartians/PackageProject.cmake
VERSION 1.4
)
# ------------------------------ Boost ----------------------------------
CPMAddPackage("gh:Orphis/boost-cmake#7f97a08b64bd5d2e53e932ddf80c40544cf45edf@1.71.0")
# -----------------------------------------------------------------------------
...
# Core
add_library(
ProjectCore
include/ProjectCore.hpp
src/ProjectCore.cpp
)
# Utils
add_library(
Utils
include/utils.hpp
src/utils.cpp
)
...
target_include_directories(ProjectCore PUBLIC include/)
target_include_directories(Utils PUBLIC include/)
add_executable(Project src/main.cpp)
target_link_libraries(Project
PUBLIC Boost::system
PRIVATE ProjectCore
PRIVATE Utils
)
# -----------------------------------------------------------------------------
set_target_properties(Project PROPERTIES CXX_STANDARD 17)
我继续执行以下命令:
core$ md build && cd build && cmake ..
core$ bear -- make -C build
core$ ./build/Project
正在尝试在 main.cpp
上增加提升
正在尝试在 utils.cpp
上增加提升
正如 Tsyvarev
在主要消息线程中指出的那样,我忘记 link 提升我想使用的其他库。通过添加以下行
,我最终能够 运行
target_link_libraries(Utils PRIVATE Boost::system)
我正尝试在我的项目中使用 Boost,但它只能在 main.cpp
内部访问。如果我尝试将它包含在另一个文件中,则会出现错误。我不知道它是否必须在 CMakeLists.txt
.
# CMakeLists.txt
...
include (cmake/CPM.cmake)
CPMAddPackage(
NAME PackageProject.cmake
GITHUB_REPOSITORY TheLartians/PackageProject.cmake
VERSION 1.4
)
# ------------------------------ Boost ----------------------------------
CPMAddPackage("gh:Orphis/boost-cmake#7f97a08b64bd5d2e53e932ddf80c40544cf45edf@1.71.0")
# -----------------------------------------------------------------------------
...
# Core
add_library(
ProjectCore
include/ProjectCore.hpp
src/ProjectCore.cpp
)
# Utils
add_library(
Utils
include/utils.hpp
src/utils.cpp
)
...
target_include_directories(ProjectCore PUBLIC include/)
target_include_directories(Utils PUBLIC include/)
add_executable(Project src/main.cpp)
target_link_libraries(Project
PUBLIC Boost::system
PRIVATE ProjectCore
PRIVATE Utils
)
# -----------------------------------------------------------------------------
set_target_properties(Project PROPERTIES CXX_STANDARD 17)
我继续执行以下命令:
core$ md build && cd build && cmake ..
core$ bear -- make -C build
core$ ./build/Project
正在尝试在 main.cpp
正在尝试在 utils.cpp
上增加提升
正如 Tsyvarev
在主要消息线程中指出的那样,我忘记 link 提升我想使用的其他库。通过添加以下行
target_link_libraries(Utils PRIVATE Boost::system)