我有一个关于MAC中CMake的问题。我确保可执行程序将使用以下代码正确链接框架和库:
link_directories(directory_to_framework_and_libs)
add_executable(program ${FILE_LIST})
target_link_libraries(program framework_name lib1 lib2)
字符串
在第一行代码中,我表示可执行程序可以搜索框架和库的位置。在第三行代码中,框架和库将链接到可执行程序。然而,当我用Xcode 4编译从cmake文件创建的xcode.project时,项目一直抱怨找不到-lframework_name
:ld: library not found -lframework_name
任何想法都将受到赞赏。
6条答案
按热度按时间8ehkhllq1#
你不能以这种方式链接到框架,你必须使用
find_library
,因为它包含了一些在OSX上对框架的特殊处理。另外,不要使用
link_directories
,CMake使用库的完整路径,这是不必要的。下面是一些简单的AudioUnit示例:
字符串
k75qkfdt2#
另一种解决方案如下:
字符串
w80xi6nr3#
您不需要所有这些麻烦(至少在cmake 2.8.12中是这样)。
这很好用:
字符串
当CMake看到一个以“-"开头的链接参数时,它不会在前面加上“-l”,而是按原样将参数传递给链接器(/usr/bin/c++)。
您需要为框架加上引号,以便CMake将这两个单词视为单个条目,而不会在“Foundation”之前添加“-l”。
ntjbwcob4#
对于cmake版本3.20.1
https://github.com/Sunbreak/cli-breakpad.trial/blob/1800b187afd5f0c29368196561ddb6b55123d4a0/CMakeLists.txt#L10-L12
字符串
li9yvcax5#
我用@Guillaume的评论写了这篇文章:
字符串
这对我来说效果最好,因为它不能在其他平台上运行,甚至可以在目标是库(
add_library
)时使用。你可以用任何你想要的ofc来替换可可框架。cngwdvgl6#
对于最新版本的CMake,
字符串