Xcode Input File vs Input File list - xcode11

I am using Carthage to add the CSVImporter library to my Xcode project. To add the framework to my project, it says to create files named input.xcfilelist and output.xcfilelist. Then, one must add the paths to the needed frameworks to those files. Finally, it says to add the input.xcfilelist to the Input File Lists section and likewise for the output.xcfilelist. I seem to not be able to create distinct files with frameworks as sub-sections of the file. Is it enough to just add the frameworks directly into the input and output file sections?

In my understanding, you can add every single framework into Input Files part. You also can create the InputFile.xcfilelist and put all your frameworks into the file. There's no difference.
You just create any file change the format to .xcfilelist should works.

Related

Is there a tree selection option for files & directories in install4j?

I have a zip file from which I want to extract only some files that I would select. Since the selection is dynamic, I figured that the best way to select these files since they are inside folders that could be nested inside other folders, would be a selection tree. Unfortunately, I haven't found such option in install4j, and I haven't found any 3rd party tool that could do the trick.
So far, all what I have been able to found is treecopy : (http://www.rjlsoftware.com/software/utility/treecopy/) ,a tool that copies my extracted folder, and keeps its structure, but without copying any file. I used it by a "Run executable" action for which I pass the two folders as arguments, that been said I want to know if there is any tree selection filee option in further versions of install4j or any 3rd part tool, that I can use as an action.
By the way I am using, install4j 5.1.8.0
As of install4j 6, there is no such form component in install4j. You can develop such a form component yourself. See the files SampleFormComponent[BeanInfo].java in the "customCode" sample project. As a base, you could use
http://www.jidesoft.com/javadoc/com/jidesoft/swing/CheckBoxTree.html
Jide commons is open source and you can add the Jide commons JAR file on the Installer->Custom code & Resources step together with the implementation of the form component.

How to specify AssemblyVersion in LLBLGen?

I'm using LLBL Gen Pro 3.5 command line (CLIRefresher and CLIGenerator) to create the solutions.
It automatically creates a AssemblyInfo.cs which contains this code:
AssemblyVersion("1.0")
I want to set it to another version while building the project. For example:
AssemblyVersion("2.1.0.234")
Question1: How can I tell LLBL to create the project with this version?
Question2: If it is not possible, how can I tell LLBL NOT to create this file, so I can add this file later using MSBuild?
A1: you can, through a custom template for assemblyinfo. It's bound in the file SD.TemplateBindings.SharedTemplates.templatebindings in the folder \Frameworks\LLBLGen Pro\Templates
You can define a new binding by creating a new templatebindings file, store it in the folder you define as 'AdditionalTemplates' folder in the project properties, and you should give that templatebindings folder a higher precedence than the one you're 'overriding' (or move it up in tab 2 on the code generator config dialog). See the SDK docs for details.
A2: It is possible, see A1. But here's the thing: this file is written once (done in the preset you're using to generate code). If the file exists the next time you generate code, it's left alone. This means that if you change it, e.g. by giving it a different version number, it won't be overwritten.
So while you could change the template easily, in this case it's not needed: you can do whatever you want with the file after it's been generated, it's not generated again.
(ps: please ask questions about LLBLGen Pro on our forums at http://www.llblgen.com/tinyforum, as we don't monitor stackoverflow that regularly. Thanks)

Creating independent version of linked file

In VS I have a single config file that I've added to several projects using "Add as link".
Now I'd like to unlink one of these files and create an independently editable file.
I could just delete from the project and make a new file with the same contents, but if I want to do this for several projects, it will be a pain.
Is there a quicker way?
One idea.
Change the config file so there is a section that maps to the project name.
If the section isn't there Use Assembly name ?, Use the "default" current one unamed one.

Creating a file bundle on OSX

For an application I would like to store a collection of files together, and have them appear in the filesystem as a single file so its easy to manage. I am currently storing everything in a folder.
I would like to keep things accessible so you can manually edit the inside contents if neccesary.
One way to do this would be to create a zip archive and give it a custom extension other then .zip. Then it appears as a filetype and if needed you can unpack and access the content, but for normal use keep it hidden.
I can't seem to find a convenient way to do this. Boost and zlib can do the compression but don't work with archives. I found libzip but I have a hard time understanding how to use it and to me it seems that it only reads/writes zip archives without doing the actual compression.
Is there a more convenient way to tackle this?
Can you call system functions for creating an archive on OSX from c++ / Carbon?
Is there another way to make a folder appear as a single file?
In OSX, you can create Document Packages (similar to application bundles) which are treated as a single file in the Finder, but are really just directories with some internal structure.
Apple does not zip these packages, but they do provide the functionality you describe and they can be created and accessed through CoreFoundation by using CFBundleRef .
From the documentation:
... The important thing to remember about creating a document package is that it is just a directory. As long as the type of the document package is registered (as described in “Registering Your Document Type”), all you have to do is create a directory with the appropriate filename extension. (The Finder uses the filename extension as its cue to treat the directory as a package.) You can create the directory (and create any files you want to put inside that directory) using the standard BSD file system routines ...
As 1st step, simple rename the folder and add the extension .bundle, e.g. Myappdir.bundle
That's will show the whole folder as one file with a lego-like bundle icon.
The next step is you must create one Info.plist file inside.

Xcode file system

I am using Xcode as part of my build for OS X, but since it is not the only IDE used, files may be added from the file system directly.
As far as I can tell, there are two ways of adding folders:
Folder reference picks up all the changes on the file system but does not register any of the files as sources.
Recursive copy allows for the files to be built but I need to constantly maintain the file structure
I am wondering if there was a way to setup Xcode to build all of the files that are a part of the folder reference or failing that, if there is a quick script to automagically fix file system discrepancies.
I came up with proof-of-concept solution that works, but will require some work to use in production. Basically, I set up a new "External Target", which compiles all source files in a given directory into a static library. Then the static library is linked into the Main Application.
In detail:
Create a directory (lets call it 'Code') inside your project directory and put some source code in it.
Create a Makefile in the Code directory to compile the source into a static library. Mine looks like this.*****
Create an External Target (lets call it 'ExternalCode') and point it to the Code directory where your source and Makefile reside.
Build the ExternalCode and create a reference to the compiled static library (ExternalCode.a) in the Products area of your project. Get Info on the reference and change the Path Type to "Relative to Built Product".
Make sure ExternalCode.a is in the "Link With Binary Libraries" section of your main target.
Add the ExternalCode target as a dependency of your main target
Add the Code directory to your "User Header Search Paths" of your main target.
Now when you drop some source files into 'Code', Xcode should recompile everything. I created a demo project as a proof of concept. To see it work in, copy B.h/m from the 'tmp' directory into the 'Codes' directory.
*Caveats: The Makefile I provided is oversimplified. If you want to use it in a real project, you'll need to spend some time getting all the build flags correct. You'll have to decide whether it's worth it to manually manage the build process instead of letting Xcode handle most of the details for you. And watch out for paths with whitespace in them; Make does not handle them very well.
Xcode's AppleScript dictionary has the nouns and verbs required to do these tasks. Assuming your other IDE's build scripts know what files are added/deleted, you could write very simple AppleScripts to act as the glue. For example a script could take a parameter specifying a file to add to the current open project in Xcode. Another script could take a parameter to remove a file from the current project. Then your other IDE could just call these scripts like any other command line tool in your build script.
I'm not aware of any built-in functionality to accomplish this. If you need it to be automatic, your best option may be to write a Folder Action AppleScript and attach it to your project folder.
In all likelihood it would be a rather difficult (and probably fairly brittle) solution, though.
It's not pretty, and I think it only solves half your problem but... If you recursively copy, then quit xcode. Then you delete the folders, and replace them with simlinks to the original folders, you at least have files that are seen as code, and they are in the same files as the other IDE is looking at... You still will need to manually add and remove files.
I sort of doubt that there's a better way to do this without some form of scripting (like folder actions) because xcode allows you to have multiple targets in one project, so it's not going to know that you want to automatically include all of the files in any particular target. So, you're going to have to manually add each file to the current target each time anyway...
One way to import another file from add/existing file:
and set your customization for new file that added .
see this

Resources