You miss a runtime search path when linking your executable. And this is what 
you achieved with install_name_tool with an additional step.

To avoid this additional step, see 
https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/RunpathDependentLibraries.html
or
https://stackoverflow.com/questions/42613881/adding-run-time-shared-library-search-path-to-executable-at-compile-time-clang

By the way this is not related to Swift at all.

Lucas

> Le 2 mars 2018 à 20:12, Harry Mallon <Harry.Mallon@codex.online> a écrit :
> 
> Hello all,
>  
> When making a pure Swift bundle Xcode automatically copies 
> `libswiftCore.dylib` as follows.
>  
> ```
> ./Tests/SwiftOnly/Debug/SwiftOnly.app
> └── Contents
>     ├── Frameworks
>     │   └── libswiftCore.dylib
>     ├── Info.plist
>     ├── MacOS
>     │   └── SwiftOnly
>     ├── PkgInfo
>     └── Resources
>         └── libswiftRemoteMirror.dylib
> ```
> When I try to run the output I get a dynamic linking error. I can reproduce 
> this by adding MACOSX_BUNDLE to `./Tests/SwiftOnly/CMakeLists.txt` (in the 
> CMake source tree) in `add_executable` and trying to run the result.
>  
> ```
> % ./Tests/SwiftOnly/Debug/SwiftOnly.app/Contents/MacOS/SwiftOnly
> dyld: Library not loaded: @rpath/libswiftCore.dylib
>   Referenced from: 
> .../Tests/SwiftOnly/Debug/SwiftOnly.app/Contents/MacOS/SwiftOnly
>   Reason: image not found
> zsh: abort      ./Tests/SwiftOnly/Debug/SwiftOnly.app/Contents/MacOS/SwiftOnly
> ```
>  
> It seems that the rpath should be set to `@loader_path/../Frameworks`. I am 
> not a Swift maestro so not exactly sure on the details of how this works. 
> After running `install_name_tool -add_rpath "@loader_path/../Frameworks" 
> ./Tests/SwiftOnly/Debug/SwiftOnly.app/Contents/MacOS/SwiftOnly` it runs fine.
>  
> Does anyone have any idea what to do? Is it a missing CMake Swift feature? We 
> are currently working around it by manually adding the rpath with a cmake 
> step.
>  
> Harry
> Harry Mallon
> Senior Software Engineer
> 
> 
> 
> T +44 203 7000 989 
> 60 Poland Street | London | England | W1F 7NT 
> 
> Three Billboards      Blade Runner 2049        I, Tonya
> 
> -- 
> 
> Powered by www.kitware.com
> 
> Please keep messages on-topic and check the CMake FAQ at: 
> http://www.cmake.org/Wiki/CMake_FAQ
> 
> Kitware offers various services to support the CMake community. For more 
> information on each offering, please visit:
> 
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
> 
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
> 
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to