【问题标题】:CMake/GCC "unrecognized option" on Mac OS XMac OS X 上的 CMake/GCC“无法识别的选项”
【发布时间】:2011-01-09 23:26:58
【问题描述】:

我正在尝试使用 CMake 2.8 和 gcc 4.6(来自 macports)在 OS X 中创建一个项目作为共享库。当 CMake 将我的库链接到 .dylib 时,我从 gcc 收到以下错误:

g++   -dynamiclib -headerpad_max_install_names -o libmycoollibrary.dylib etc...
g++: error: unrecognized option '-h'
make[2]: *** [libnrtCore.dylib] Error 1
make[1]: *** [CMakeFiles/nrtCore.dir/all] Error 2
make: *** [all] Error 2

这个 -headerpad_max_install_names 似乎是问题所在,但我以前从未见过。有谁知道如何让 CMake 不包含此选项,或让 GCC 接受此选项?

【问题讨论】:

    标签: macos gcc cmake


    【解决方案1】:

    您可以重新构建 cmake 来解决这个问题——它显然是为 g++ 的 XCode / Darwin 版本(4.2 的特殊版本)生成代码,它接受许多非标准的链接器标志。

    只需更改 Modules/Platform/Darwin*.cmake 文件并重新构建。罪魁祸首如下所示:

    SET(CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first -headerpad_max_install_names") 
    

    【讨论】:

    • 不幸的是,我必须使用 gcc 4.6,因为我需要支持最新的 C++0x 功能。
    • 看起来你将不得不重建 cmake;要更改的文件是 Darwin.cmake。罪魁祸首是 SET(CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first -headerpad_max_install_names")
    • 这很好用,谢谢。您介意编辑您的答案以反映您的评论,以便我接受吗?另请注意,仅更改 Darwin.cmake 不起作用 - 我必须更改所有 Modules/Platform/Darwin* 文件才能使其正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多