CMake/GCC“;“未确认期权”;在MacOSX上
我正在尝试使用CMake 2.8和gcc 4.6(来自macports)在OS X中创建一个共享库项目。当CMake将我的库链接到.dylib时,我从gcc得到以下错误:CMake/GCC“;“未确认期权”;在MacOSX上,macos,gcc,cmake,Macos,Gcc,Cmake,我正在尝试使用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]
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_名称似乎是个问题,但我以前从未见过它。有人知道如何让CMake不包含此选项,或者让GCC接受此选项吗?您可以重新构建CMake来修复此问题——它显然是为g++(4.2的特殊版本)的XCode/Darwin版本生成代码,该版本接受许多非标准链接器标志 只需更改模块/Platform/Darwin*.cmake文件并重新构建。罪魁祸首是这样的:
SET(CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first -headerpad_max_install_names")
不幸的是,我不得不使用GCC4.6,因为我需要支持最新的C++0x特性;要更改的文件是Darwin.cmake。罪魁祸首行已设置(CMAKE_CXX_LINK_FLAGS“-Wl,-search_paths_first-headerpad_max_install_names”),这非常有效,谢谢。您是否介意编辑您的答案以反映您的评论,以便我可以接受?另外请注意,仅仅更改Darwin.cmake是不起作用的——我必须更改所有模块/平台/Darwin*文件才能使其起作用。