【问题标题】:Cmake compile with Frameworks on Mac OSX and treat .cpp files like .m/.mmCmake 在 Mac OSX 上使用框架编译并将 .cpp 文件视为 .m/.mm
【发布时间】:2011-04-15 18:59:08
【问题描述】:

我正在寻找使以下内容正常工作的提示,这是我的 CMakeLists.txt

# cmake_minimum_required(2.8.2) 项目(样板) # 基础文件 设置(src_files src/greet.h src/main.cpp ) # 如果在 OSX 上,需要这些文件 如果(苹果) SET(CMAKE_EXE_LINKER_FLAGS "-framework Foundation -w") 设置(src_files ${src_files} src/mac/greet.mm src/mac/greeting.h src/mac/greeting.m ) 万一() # 如果在 windows 上,需要这些文件 如果(WIN32) 设置(src_files ${src_files} src/win/greet.cpp ) 万一() add_executable(问候 ${src_files} )

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

$ cmake CMakeLists.txt && 制作 -- 配置完成 -- 生成完成 -- 构建文件已写入:/Users/leehambley/Projects/watched.it-client 扫描目标问候的依赖关系 [ 33%] 构建 CXX 对象 CMakeFiles/greeting.dir/src/mac/greet.o 链接 CXX 可执行问候语 未定义的符号: “greet()”,引用自: main.o 中的 _main ld:未找到符号 collect2: ld 返回 1 个退出状态 make[2]: *** [问候语] 错误 1 make[1]: *** [CMakeFiles/greeting.dir/all] 错误 2 make: *** [全部] 错误 2 1

【问题讨论】:

    标签: c++ objective-c cmake


    【解决方案1】:

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

    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 不完全了解的一些事情。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      相关资源
      最近更新 更多