标签: cmake-modules

如何使用 CMake 在 macOS 上使用和链接 boost?

感谢所有提供帮助的人!最终起作用的是改变:

set(CMAKE_CXX_COMPILER "gcc-10")
set(CMAKE_C_COMPILER "g++-10")
Run Code Online (Sandbox Code Playgroud)

到:

set(CMAKE_CXX_COMPILER "/usr/local/opt/llvm/bin/clang")
set(CMAKE_C_COMPILER "/usr/local/opt/llvm/bin/clang++")
Run Code Online (Sandbox Code Playgroud)

尝试将 boost 链接到我的程序时出现以下错误:

[ 83%] Linking CXX executable cartogram
Undefined symbols for architecture x86_64:
  "__ZN5boost15program_options11to_internalERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", referenced from:
      __ZN5boost15program_options11to_internalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorIS7_SaIS7_EERKS8_IT_SaISB_EE in main.cpp.o
  "__ZN5boost15program_options16validation_error12get_templateB5cxx11ENS1_6kind_tE", referenced from:
      __ZN5boost15program_options10validators17get_single_stringIcEERKNSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKSt6vectorIS9_SaIS9_EEb in main.cpp.o
  "__ZN5boost15program_options19options_descriptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjj", referenced from:
      _main in main.cpp.o
  "__ZN5boost15program_options20invalid_option_valueC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", referenced from:
      __ZN5boost15program_options8validateIicEEvRNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIT0_St11char_traitsIS7_ESaIS7_EEESaISB_EEPT_l in main.cpp.o
  "__ZN5boost15program_options22error_with_option_nameC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_S9_i", referenced from:
      __ZN5boost15program_options10validators17get_single_stringIcEERKNSt7__cxx1112basic_stringIT_St11char_traitsIS5_ESaIS5_EEERKSt6vectorIS9_SaIS9_EEb in main.cpp.o
  "__ZN5boost15program_options3argB5cxx11E", referenced from:
      __ZNK5boost15program_options11typed_valueIbcE4nameB5cxx11Ev in main.cpp.o
      __ZNK5boost15program_options11typed_valueINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEcE4nameEv in main.cpp.o
      __ZNK5boost15program_options11typed_valueIicE4nameB5cxx11Ev in main.cpp.o
  "__ZN5boost15program_options6detail7cmdline21set_additional_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE", referenced from:
      __ZN5boost15program_options25basic_command_line_parserIcE12extra_parserENS_9function1ISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_ERKSA_EE in main.cpp.o
  "__ZN5boost15program_options6detail7cmdlineC2ERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EE", referenced from:
      __ZN5boost15program_options25basic_command_line_parserIcEC1EiPKPKc in main.cpp.o
  "__ZN5boost15program_options8validateERNS_3anyERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEPS9_i", referenced …
Run Code Online (Sandbox Code Playgroud)

c++ boost cmake boost-program-options cmake-modules

4
推荐指数
1
解决办法
2553
查看次数

无法从 cmake.dir 获取版本

当我构建 syc 我的 android 项目时,它是这样的 在此输入图像描述

在此输入图像描述

本地属性

在此输入图像描述

我该如何解决这个错误?

android android-ndk cmake-modules

3
推荐指数
1
解决办法
6261
查看次数

如何确定 CMake 函数的范围,以便无法从文件外部访问它?

我正在尝试在一个相对复杂的项目中编写一些 CMake 代码,并且我有一个内部包含另一个模块的模块。问题是,每当我包含我的模块时,它内部包含的模块中定义的所有功能都在全局级别可用!这实际上是用一堆我没有明确要求的函数污染了我的全局命名空间。

例如:

# CMakeLists.txt

# Include my module
include(MyModule)

# Call a function from my module
my_module_function()

# HERE IS THE PROBLEM -- functions from "AnotherModule" are visible here!
# This call works
another_module_function()
Run Code Online (Sandbox Code Playgroud)

在我的模块内:

# MyModule.cmake

# Include another module
#  - This other module is written and supported by someone else so I can't modify it
#  - No functions from "AnotherModule" will be used outside of "MyModule"
include(AnotherModule)

# Define my function
function(my_module_function)

    # Call …
Run Code Online (Sandbox Code Playgroud)

scope cmake cmake-modules

1
推荐指数
1
解决办法
2987
查看次数

在linux中使用cmake获取“无法找到cmake模块文件:CMakeDetermineVersionCompiler.cmake”

通过网站脚本安装 cmake 后,我收到Could not find cmake module file: CMakeDetermineVersionCompiler.cmake 。我缺少什么以及在哪里/运行什么命令来解决此问题。

安装命令:

sudo ./cmake.sh --prefix=/usr/local/ --exclude-subdir
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)

project(Hello Version 1.0)

add_executable(${PROJECT_NAME} ../src/main.cpp)
Run Code Online (Sandbox Code Playgroud)

版本:cmake版本3.16.6(我也尝试了最新版本3.17.2)

操作系统:Linux Mint 19 Cinnamon

linux cmake cmake-modules

0
推荐指数
1
解决办法
1万
查看次数