我有一个与MAC中的CMake有关的问题.我确保可执行程序将使用以下代码正确链接框架和库:
link_directories(directory_to_framework_and_libs)
add_executable(program ${FILE_LIST})
target_link_libraries(program framework_name lib1 lib2)
Run Code Online (Sandbox Code Playgroud)
在第一行代码中,我表示可执行程序可以搜索框架和库的位置.在第三行代码中,框架和库将链接到可执行程序.但是,当我使用Xcode 4编译从cmake文件创建的xcode.project时,项目一直在抱怨它无法找到-lframework_name:ld: library not found -lframework_name任何想法都将受到赞赏.
Gui*_*ume 17
您无法以这种方式链接到框架,您必须使用find_library它,因为它包含对OSX上的框架的一些特殊处理.
另外,不要使用link_directories,CMake使用库的完整路径,这是不需要的.
这是AudioUnit的一些简单示例:
find_library(AUDIO_UNIT AudioUnit)
if (NOT AUDIO_UNIT)
message(FATAL_ERROR "AudioUnit not found")
endif()
add_executable(program ${program_SOURCES})
target_link_libraries(program ${AUDIO_UNIT})
Run Code Online (Sandbox Code Playgroud)
fee*_*ree 16
另一种解决方案如下:
target_link_libraries(program "-framework CoreFoundation")
target_link_libraries(program "-framework your_frame_work_name")
set_target_properties(program PROPERTIES LINK_FLAGS "-Wl,-F/Library/Frameworks")
Run Code Online (Sandbox Code Playgroud)
gas*_*ard 13
你不需要所有这些麻烦(至少使用cmake 2.8.12).
这很好用:
target_link_libraries(program stdc++ "-framework Foundation" "-framework Cocoa" objc)
Run Code Online (Sandbox Code Playgroud)
当CMake看到以" - "开头的链接参数时,它不会添加"-l"并将参数原样传递给链接器(/ usr/bin/c ++).
您需要框架的引号,以便CMake将这两个单词视为单个条目,并且不会在"Foundation"之前添加"-l".
| 归档时间: |
|
| 查看次数: |
16912 次 |
| 最近记录: |