Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Project Tool: Some projectdefinition.txt options don't seem to work

    Cinema 4D SDK
    2
    9
    1.2k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • fwilleke80F
      fwilleke80
      last edited by fwilleke80

      Hi,

      I tried to set up the projectdefinition.txt for a bigger plugin project we have here. I guess I'm doing it wrong... or the project tool does not behave the way I would expect from reading the SDK.

      This is the folder structure of the project (I know it's not ideal, but reorganising all the files and subfolders is currently not an option):

      my_big_project
      + project
          + projectdefinition.txt
      + source
          + main.cpp
          + many_more_files.cpp
          + lots_of_headers.h
      + some_extra_folder_with_source
          + irrelevant_subfolder
              + files_that_must_not_be_included!
          + sourcefile.cpp
          + headerfile.h
      + git_submodule_of_a_library
          + project_mac.xcodeproj
          + project_windows.vcxproj
          + project_windows.sln
          + files_that_must_not_be_included!
          + include
              + header_files_that_must_be_included!
          + another_subfolder
              + files_that_must_not_be_included
              + include
                  + headerfiles_that_must_be_included
      

      I need to:

      • Give the generated project a different name than "my_big_project"
      • Exclude the folders "some_extra_folder_with_source/irrelevant_subfolder" and "git_submodule_of_a_library", so the source files in those folders won't be in my project
      • Include the project files from "git_submodule_of_a_library" to be referenced in my project. Their resulting library files must also be linked in my plugin binary!
      • Add include paths to "some_extra_folder_with_source, "git_submodule_of_a_library/include", and "git_submodule_of_a_library/another_subfolder/include".

      This is what my projectdefinition.txt looks like:

      // Supported platforms - can be [Win64;OSX]
      Platform=Win64;OSX
      
      // Type of project - can be [Lib;DLL;App]
      Type=DLL
      
      // C4D component
      C4D=true
      
      // API dependencies
      APIS=cinema.framework;mesh_misc.framework;math.framework;core.framework;
      
      AdditionalDependencies=../git_submodule_of_a_library/project_windows.vcxproj;
      Frameworks.OSX=../git_submodule_of_a_library/project_mac.xcodeproj;
      
      // Search paths
      USER_HEADER_SEARCH_PATHS=../git_submodule_of_a_library/include;../git_submodule_of_a_library/another_subfolder/include;../some_extra_folder_with_source;
      AdditionalIncludeDirectories=../git_submodule_of_a_library/include;../git_submodule_of_a_library/another_subfolder/include;../some_extra_folder_with_source;%(AdditionalIncludeDirectories)
      
      // Exclude unwanted source files from being added to project
      Exclude=../some_extra_folder_with_source/irrelevant_subfolder/; \
              ../git_submodule_of_a_library/;
      
      // plugin/module ID
      ModuleId=com.myself.myplugin
      

      I opened the generated project in Xcode 10 (didn't check Visual Studio yet), and found:

      • All source files from the excluded folder have been added to the project. None of the defined Excludes has worked.
      • an empty folder "frameworks" exists in the project structure in XCode. Why?
      • A second folder "Frameworks" also exists in the project structure in XCode. It contains the referenced Maxon frameworks, and a dead reference to ../git_submodule_of_a_library/project_mac.xcodeproj(meaning: The project file appears, but it's greyed out and does not contain anything)
      • There is only one single include path set in the project: ../git_submodule_of_a_library/another_subfolder/include. Where are the other ones?
      • I also don't know how to name the generated project file.

      Any idea how to make this work?

      Thanks in advance!

      Cheers,
      Frank

      www.frankwilleke.de
      Only asking personal code questions here.

      1 Reply Last reply Reply Quote 0
      • S
        s_bach
        last edited by

        Hello,

        regarding Exclude: The Exlude-statement is not using file-paths, but is defining a filter. See Includes.

        The name of the generated plugin project can't be changed. The NAME-attribute only works for solutions. See Project tool: Custom plugin name and master solution

        MAXON SDK Specialist

        Development Blog, MAXON Registered Developer

        1 Reply Last reply Reply Quote 0
        • fwilleke80F
          fwilleke80
          last edited by fwilleke80

          Hi Sebastian!

          Thanks for your reply! Isn't that exactly what I did with the Excludes?

          Example in documentation:

          // exclude OS specific code
          Exclude.Win=/source/mac/
          Exclude.OSX=/source/win/
          

          What I wrote:

          // Exclude unwanted source files from being added to project
          Exclude=../some_extra_folder_with_source/irrelevant_subfolder/; \
                  ../git_submodule_of_a_library/;
          

          I relative path with a trailing "/" at the end. Or can I only specify multiple folders for the Includes, but not for the Excludes?

          Or wait, is it the ".." at the beginning that's throwing the Project Tool off?

          Cheers,
          Frank

          www.frankwilleke.de
          Only asking personal code questions here.

          1 Reply Last reply Reply Quote 0
          • S
            s_bach
            last edited by

            Hello,

            first, please try "Exlude.Win" and "Exlude.OSX" as shown in the example.

            Second, as I said, "Exclude" does not use file-paths or even relative paths. It just defines strings, that are used to filter URLs. So if ".." is not part of the actual path, it is not a match.

            MAXON SDK Specialist

            Development Blog, MAXON Registered Developer

            1 Reply Last reply Reply Quote 0
            • fwilleke80F
              fwilleke80
              last edited by

              Aaah, ok! That's a start, thank you!

              www.frankwilleke.de
              Only asking personal code questions here.

              1 Reply Last reply Reply Quote 0
              • fwilleke80F
                fwilleke80
                last edited by

                Still, how would I include a 3rd party library in the project, like in my example "git_submodule_of_a_library/project_mac.xcodeproj". It needs to be built before the plugin, and the resulting library must be linked.

                www.frankwilleke.de
                Only asking personal code questions here.

                1 Reply Last reply Reply Quote 0
                • S
                  s_bach
                  last edited by s_bach

                  As far as I know the Project Tool only handles Cinema 4D projects/plugins. I'm not aware of any way of including projects that are not C4D plugins.

                  MAXON SDK Specialist

                  Development Blog, MAXON Registered Developer

                  1 Reply Last reply Reply Quote 0
                  • fwilleke80F
                    fwilleke80
                    last edited by fwilleke80

                    I don't want to use it to create project files for non-C4D projects. I just want to build and link a ready-to-build 3rd party library.

                    www.frankwilleke.de
                    Only asking personal code questions here.

                    1 Reply Last reply Reply Quote 0
                    • S
                      s_bach
                      last edited by

                      I think we are talking past each other.

                      You can of course build any project any way you like. An then make sure that your plugins link to the build result using the link options defined in projectdefinition.txt.

                      But I think you want to include an already existing (non-plugin) project in the solution created by the Project Tool, right? And I think that is not possible. I guess you could add the project manually to the solution created by the Project Tool.

                      MAXON SDK Specialist

                      Development Blog, MAXON Registered Developer

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post