gpt4 book ai didi

c++ - Cmake 在 Mac OSX 上使用框架编译并将 .cpp 文件视为 .m/.mm

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:03 25 4
gpt4 key购买 nike

我正在寻找让以下内容起作用的提示,这是我的 CMakeLists.txt

# cmake_minimum_required(2.8.2)project(boilerplate)# base filesset(src_files  src/greet.h  src/main.cpp)# if on OSX, these files are neededif(APPLE)  SET(CMAKE_EXE_LINKER_FLAGS "-framework Foundation -w")  set(src_files    ${src_files}    src/mac/greet.mm    src/mac/greeting.h    src/mac/greeting.m  )endif()# if on windows, these files are neededif(WIN32)  set(src_files    ${src_files}    src/win/greet.cpp  )endif()add_executable(greeting  ${src_files})

我要求在 OSX 上将 .cpp 文件视为 .mm 文件(但在 Windows 上不是)并且我可以加载核心基础等框架......我是一个完整的 cmake 新手,所以我可以甚至开始不知道从哪里开始,但我希望我的方向是正确的,当前输出是:

$ cmake CMakeLists.txt && make-- Configuring done-- Generating done-- Build files have been written to: /Users/leehambley/Projects/watched.it-clientScanning dependencies of target greeting[ 33%] Building CXX object CMakeFiles/greeting.dir/src/mac/greet.oLinking CXX executable greetingUndefined symbols:  "greet()", referenced from:      _main in main.old: symbol(s) not foundcollect2: ld returned 1 exit statusmake[2]: *** [greeting] Error 1make[1]: *** [CMakeFiles/greeting.dir/all] Error 2make: *** [all] Error 21

最佳答案

一旦我理解了引擎盖下应该发生的事情,这就变得相当容易了:

set(CMAKE_CXX_FLAGS "-x objective-c++")

它告诉 gcc 你想将语言属性(-x language,在 man gcc 中)设置为 Objective- C++.

您还可以对单个文件执行此操作:

set_source_files_properties(${SOURCE_FILES} PROPERTIES 
COMPILE_FLAGS "-x objective-c++")

我在这两个方面都取得了不同程度的成功,可能突出了我对 CMake 不完全理解的一些事情。

关于c++ - Cmake 在 Mac OSX 上使用框架编译并将 .cpp 文件视为 .m/.mm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770498/

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