Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake/GCC“;“未确认期权”;在MacOSX上_Macos_Gcc_Cmake - Fatal编程技术网

CMake/GCC“;“未确认期权”;在MacOSX上

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]

我正在尝试使用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_名称似乎是个问题,但我以前从未见过它。有人知道如何让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*文件才能使其起作用。