Xcode not launching

grehan's icon

Is anyone else using the C++ object dev kit on mac? I created a package but when I try to create an object with a name Xcode doesn’t open. In fact; nothing happens. Anyone any ideas? tks

max 8.1.5
min-devkit 0.5.4

Griotspeak's icon

When I follow the readme instructions up to `cmake --build ..`, I get an error indicating that `mock_kernel_postBuildPhase.makeDebug` is missing.

Griotspeak's icon

The solution to my problem was downloading an older (10.1) version of Xcode. The Xcode project still uses the legacy build system and that causes a warning/error.

Griotspeak's icon

That simply allowed me to get further outside of Max. If, within Max, I open the min.dev patch and select an object to compile, Max crashes.

Steve Meyer's icon

I am seeing the same thing. A few debugging details for Cycling folks...

When using the min-devkit launcher per and following along on the tutorial video, I click on the Compile Code step 2 and it is just silent. XCode never launches.

I click on the button in Create a Package and the new package folder is created (I'm named it "weft" which is used below). I then go to Create an Object and do see my new package name in the menu. I click the button to create an object, supply a name and then nothing happens. Again, XCode never launches. However, when I look at the file system in Finder, I do see both the package and the object.

I do see the following file:

~/Documents/Max 8/Packages/weft/tmp/min-cmake-log.txt

with the contents:

sh: /Users/<username>/Documents/Max 8/Packages/min-devkit/script/cmake-mac/bin/cmake: No such file or directory

I do see cmake installed on my computer:

$ cmake --version
cmake version 3.18.4

Steve Meyer's icon

Little more debugging. This seems to be the reference to cmake that is out of sync with where files might be:

~/Documents/Max 8/Packages/min-devkit $ grep -r "cmake-mac/bin/cmake" . 
./source/projects/min.project/min.project.cpp: string cmake_path {"/script/cmake-mac/bin/cmake"};
Binary file ./externals/min.project.mxo/Contents/MacOS/min.project matches
~/Documents/Max 8/Packages/min-devkit $ find . -name "cmake" -print 
./source/min-api/max-api/script/cmakepp/source/core/cmake
./source/min-api/max-api/script/cmakepp/source/formats/cmake
./source/min-api/max-api/script/cmakepp/source/cmake
./source/min-api/max-api/script/cmakepp/tests/formats/cmake
./source/min-api/max-api/script/cmakepp/tests/cmake
Rob Ramirez's icon

here's what I can say to get you going with Min (terminal commands are for Mac, adjust if on windows)

  • don't use the Package manager version, instead clone from github (you can clone anywhere but easiest is probably Documents/Max 8/Packages folder). the branch tag is optional:

  • git clone --recursive https://github.com/Cycling74/min-devkit.git

  • ensure you are meeting all the necessary prerequisites

  • I had to make the following change to get the package creation script to run - open up the script/create_package.rb file in your favorite text editor, and insert a # (pound sign) at the beginning of line 69 and line 70 to comment them out, and then save the script file.

  • #FileUtils::cp "#{source_dir}/.travis.yml", "#{target_dir}/.travis.yml"
    #FileUtils::cp "#{source_dir}/appveyor.yml", "#{target_dir}/appveyor.yml"

[edit: the above step should no longer be necessary if cloning from the tip of master]

  • to create a new package, run the setup script, passing the path to where you want your package to live: script/create_package.rb ../foo

  • this creates your starter package one level down and names it foo

  • cd into your new package directory build folder, and run cmake to test the build :

  • cd ../foo/build

  • On Mac - cmake -G Xcode ..

  • On Win - cmake -G "Visual Studio 16 2019" ..

  • Open the generated project (e.g. build/foo.xcodeproj) in your IDE and build the project. If you are working from inside the Max 8/Packages folder then the compiled external and help patch are already in the correct place to be found by max (Max 8/Packages/foo/externals)

  • To add your own object, follow the instructions here - https://github.com/Cycling74/min-devkit/blob/master/HowTo-NewObject.md

Steve Meyer's icon

Rob, thank you so much, I got everything up and running. Now that the environment is set up, I am eager to continue learning C++, min-devkit and the testing framework. I'd be happy to rerun any steps to test future changes to the repository.

I got everything working per your instructions with one minor caveat. In order follow your instructions precisely I first attempted to "download" a release, but this resulted in an error in the final steps of the Ruby script. I then cloned the release and everything is working.

Details follow below, including the unsuccessful attempt in case it can help anyone in the future searching for the same error messages in Google.

Attempt 2 (Successful): Remove download and generated package from attempt 1, Clone the release tag, retry

git clone git@github.com:Cycling74/min-devkit.git --branch v0.5.4

Comment out lines and run the script:

~/Documents/Max 8/Packages/min-devkit-0.5.4 $ ruby script/create_package.rb ../weft

This is successful.

Running cmake from the newly created package's build directory also worked. And then I could open the project in Xcode.

The build also succeeded, but with a warning. In the other post where I tried to build from the command line and it failed, I got the same message from within Xcode, but this time only as a warning while building the default hello_world object.

Warning in Xcode that stopped a command line compilation/build.

And for final confirmation, I can create a [weft.hello-world] object in Max itself.

Attempt 1 (Unsuccessful): Download the tarball file, move it into Max 8/Packages, extract contents

Comment out lines and run the script:

~/Documents/Max 8/Packages/min-devkit-0.5.4 $ ruby script/create_package.rb ../weft
   CREATING PACKAGE weft
   SOURCE DIR: /Users/<username>/Documents/Max 8/Packages/min-devkit-0.5.4
    TARGET DIR: /Users/<username>/Documents/Max 8/Packages/weft
fatal: not a git repository: /Users/<username>/Documents/Max 8/Packages/weft/source/min-api/../../.git/modules/source/min-api
'source/min-api' does not have a commit checked out
fatal: not a git repository: /Users/<username>/Documents/Max 8/Packages/weft/source/min-lib/../../.git/modules/source/min-lib
'source/min-lib' does not have a commit checked out
fatal: Failed to resolve 'HEAD' as a valid ref.

I can verify that during this first attempt most of the Ruby script worked because the last call to its substitute_strings_in_file method did change the newly generated ReadMe.md contents to replace the default package name with "weft" (my package name).

The first git command (git init) also appeared to work because I ran git status and saw untracked files.

Rob Ramirez's icon

ah thank you for following up, I see now the release version doesn't include the package scripts!

ok I've updated the post to suggest using git clone instead (make sure you're cloning recursively to include the sub-modules)

Griotspeak's icon

please add `git clone https://github.com/Cycling74/min-devkit.git --recursive` to step 0 of building. I figured out the travis, appveyor bit eventually but the need for --recursive is pretty subtle.

Thank you! It works in the command line (the 13 Release tests still 'fail' but that doesn't seem to be of consequence), Max doesn't crash, and max opened the project when I selected the object on the compile page!

Rob Ramirez's icon

thanks for confirming, I've updated the min-devkit readme as suggested.

grehan's icon

Thanks all for your help here. Im up and running!

grehan's icon

What are the exact steps to rebuild the object after I have edited the code? Because I am having issues where the changes are not showing up in Max.

Steve Meyer's icon

After building in Xcode, I just quit Max and restart it, then create the object as you would any object. Since my package is "weft" I would just create a new object [weft.hello-world] and it would show updated behavior.

grehan's icon

Ok tks. So you just build in Xcode, nothing with Cmake or anything?

Steve Meyer's icon

Yes, I just build with Xcode, though I am not very experienced with it. The only thing that has tripped me up is making sure the menu for the "active scheme" is set to the right thing. For example, if it is set to specifically build <something>_test and I intended to build the Max object itself.

grehan's icon

Ye I built with Xcode but after restarting Max, the object wouldn't show up when I typed it out. It never shows up with autocompletion.

Eventually it shows up. But doesn't seem to be regular steps . Have to just wait until it shows up. Sometimes dragging the object from the package folder speeds it up.

Rob Ramirez's icon

you have to make sure the external you are building is in the search path. this is why the min-devkit instructions recommend installing in your documents/max 8/packages folder, so that any externals build will already be in the correct place.

alternatively you can add your package folder to the search path via Options -> File Preferences

grehan's icon

This is my path 'Max 8⁩ ▸ ⁨Packages⁩ ▸ ⁨min-devkit⁩ ▸ ⁨foo⁩ ▸ ⁨externals⁩'.

This is wrong?

Rob Ramirez's icon

yes. it should be Max 8 / Packages / foo (your package name) / externals

grehan's icon

ah ok, Whats the quickest way to change that path?

Steve Meyer's icon

What worked for me was to create the package using the Ruby script per the instructions above. So after doing the recursive clone of the min-devkit repo into Max 8/Packages, I changed directory into min-devkit and ran:

~/Documents/Max 8/Packages/min-devkit $ ruby script/create_package.rb ../foo

I believe that passing "../foo" at the command line to the Ruby script sets up all the paths correctly and results in ~/Documents/Max 8/Packages/foo. Then from Xcode, when the project builds, the actual Max external object is in a place that Max's search path can find.

grehan's icon

Working like a charm now. The problem is I ran the create_package.rb ../foo from inside the script folder initially, so this time just ran ruby create_package.rb ../../foo

Thanks all.