I am trying to add a subproject into Master project using VBA.
I have every project in different folder. I can't figure out how to get any kind of "relative" path to it and how to find out if project is or is not into Master project.
I tried following MS Project documentation but there is almost nothing about this.
I have got every project in different folder
FYI: standard practice is to have the master and subprojects in the same folder.
I can't figure out how to get any kind of "relative" path to it
The path to subprojects is always the full path. Project does not use relative paths.
how to find out if project is or is not into Master project
This code will list out (in the Immediate window) the full name of each of the subprojects. Compare the output list to your list of projects.
Sub ListSubprojects()
Dim s As Subproject
For Each s In ActiveProject.SubProjects
Debug.Print s.Path
Next s
End Sub
I want my class library conditionally compiled so that it is in debugging mode when my project is, and is not when my project isn't.
For example, I have this Module in my class library:
Module MyDebug
<Conditional("DEBUG")>
Sub print(ByVal msg As String)
Debug.Print(Now.ToString("yyyy-MM-dd HH:mm:ss.fff") & " " & msg)
End Sub
<Conditional("DEBUG")>
Sub debugEnd(Byval bool As Boolean)
Environment.Exit(0)
End Sub
End Module
When I debug my project which references this library it run any of these when they are called.
I've tried searching online, but I haven't found anything that helps since I can only find things to do with debugging the actually class library, while I only want it to send these conditionally compiled statements while I'm debugging my project.
However, by experimenting around a bit, I've found that if in the class library I go to:
'My Project' -> the 'Compile' tab -> 'Advanced Compile Options'
and then tick 'Define DEBUG constant' (and then build the library), the project does run the debug statements when called.
However, I'm not entirely sure of the behaviour of 'Define DEBUG constant' in the class library. Does it define DEBUG if and only if my project is in debug mode?
If not, then is there a simple way to acheive what I aim to do? (I don't want to have to tick/untick the checkbox in the class library each time I switch between debug and release in my project, and my class library is referenced by more than one project, anyway)
Note that in the project I'm referencing the .dll in the Bin -> Release folder of my class library which I hope is the right way to reference it.
In addition, I would like to ask about how VB acheives this with the Debug class, because it is also imported with a reference like any other class library, and works in the way I would like the above to — surely I could do the same?
If you keep the class library project in the same solution as your main project it will use the same configuration (Debug or Release) as every other project in that solution. This means that you won't have to manually check/uncheck Define DEBUG constant as it will not be defined anyway if you have set the configuration to Release.
Even if your projects are not in the same folder you may still add your class library project to your solution. Here's how to do it:
Right-click your solution in the Solution Explorer and goto Add > Existing Project.
In the file browsing dialog that opens, locate the .vbproj-file of your class library and click OK.
Now when you change compilation configuration it should be reflected over the entire solution and your class library shall only have its DEBUG constant defined if you set the configuration to Debug.
If you cannot see your solution in the Solution Explorer:
In Visual Studio, goto Tools > Options > Projects and Solutions > General.
Check Always show solution and press OK.
For the above to work you must also change the way you reference your class library. The way you are currently doing it is correct, but it won't work in this case as then you'll only be referencing the Release version of your dll.
Start by removing your current reference to your class library.
Open the Add Reference dialog and go to the Projects tab.
Select your class library's project and press OK.
This should now reference the class library's output from the solution's current compilation configuration.
In xcode 4.5 how do I select different target settings for different builds for example one target setting for debug, one target setting for release etc, so I can define different icons depending on the build etc.
You have two options, neither perfect. I'm going to focus on the concrete example of using different icons depending on your build configuration, as you suggest, though both techniques can be applied more broadly.
Redirect in your Info.plist
This is the simplest way. Specify your "Icon file" property in your target's Info.plist as e.g. "Icon-${CONFIGURATION}". Then, create two ICNS icons, "Icon-Release.icns" and "Icon-Debug.icns", and add them to your project. That's it. The downside with this approach is that both icons will be copied into your built app every time, rather than just the one it needs.
Use a "Run Script" build phase
This is a little more involved but it gives you a better result. Add a Run Script build phase to your target, with the following script:
cp "$(dirname "${PRODUCT_SETTINGS_PATH}")/Icon-${CONFIGURATION}.icns" "${SCRIPT_OUTPUT_FILE_0}"
Specify its output file as:
$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/Icon.icns
And make sure your "Icon file" property in your Info.plist is set to just "Icon".
This relies on your icons sitting in the same folder as your Info.plist within your source tree (though you can edit the script however you like to suit your project's configuration).
Note also that with this approach Xcode won't be able to see that you have the icon set correctly, so for example in the "Summary" tab of your target's settings it'll still show the question mark placeholder for the icon. You'll need to do an actual build to verify it's working.
My solution is pretty close from Wade's first point, you can also add an dynamic suffix using a user-defined settings in you project configuration.
I use this solution to dynamize the icon, the bundle display name and also the bundle identifier of my build to be able to use the version from the app store beside my development version.
Xcode Project: How to create conditional build via Xcode Project
I had tried to define preprocessed macro such as LIGHTER_VERSION_APP at target or project level setting. Now I'm trying to use this macro in the other dependent project of my main project. I'm not able to use this LIGHTER_VERSION_APP macro in other dependent project.
Can anybody tell me how I can do that?
Thanks
In your Xcode project or target settings, under the compiler settings, you can add any flags you like to "Other C Flags" and "Other C++ Flags". You can simply add "-D LIGHTER_VERSION_APP" and it should now be defined when compiling your project. Once that's done, you can use #if defined LIGHTER_VERSION_APP in your code to turn stuff on or off.
I am using ARC successfully in my project. However, I have encountered a few files (e.g., in unit tests and mock objects) where the rules of ARC are a little more fragile right now. I recall hearing that there was a way to disable ARC on a per-file basis, though I have been unable to find this option.
Is this possible? How do I disable ARC on a per-file basis?
It is possible to disable ARC for individual files by adding the -fno-objc-arc compiler flag for those files.
You add compiler flags in Targets -> Build Phases -> Compile Sources. You have to double click on the right column of the row under Compiler Flags. You can also add it to multiple files by holding the cmd button to select the files and then pressing enter to bring up the flag edit box. (Note that editing multiple files will overwrite any flags that it may already have.)
I created a sample project that has an example: https://github.com/jaminguy/NoArc
See this answer for more info:
Disable Automatic Reference Counting for Some Files
Disable ARC on MULTIPLE files:
Select desired files at Target/Build Phases/Compile Sources in Xcode
PRESS ENTER
Type -fno-objc-arc
Press Enter or Done
;)
For Xcode 4.3 the easier way might be: Edit/Refactor/Convert to objective-C ARC, then check off the files you don't want to be converted. I find this way the same as using the compiler flag above.
It is very simple way to make individual file non-arc.
Follow below steps :
Disable ARC on individual file:
Select desired files at Target/Build Phases/Compile Sources in Xcode
Select .m file which you want make it NON-ARC
PRESS ENTER
Type -fno-objc-arc
Non ARC file to ARC project flag : -fno-objc-arc
ARC file to non ARC project flag : -fobjc-arc
Note: if you want to disable ARC for many files, you have to:
open "Build phases" -> "Compile sources"
select files with "left_mouse" + "cmd" (for separated files) or + "shift"
(for grouped files - select first and last)
press "enter"
paste -fno-objc-arc
press "enter" again
profit!
Just use the -fno-objc-arc flag in Build Phases>Compile Sources
Select Xcode project
Go to targets
Select the Build phases section
Inside the build phases section select the compile sources.
Select the file which you do not want to disable ARC and add -fno-objc-arc
It is possible to disable ARC (Automatic Reference Counting) for particular file in Xcode.
Select Target -> Build Phases -> Compile Sources -> Select File (double click) -> Add "-fno-objc-arc" to pop-up window.
I had encountered this situation in using "Reachibility" files.
This is shown in below figure :
use -fno-objc-arc for each file in build phases
The four Mandatory Step as explained in this video
//1. Select desired files
//2. Target/Build Phases/Compile Sources
//3. Type -fno-objc-arc
//4. Done
Please Just follow the screenshot and enter -fno-objc-arc .
If you're using Unity, you don't need to change this in Xcode, you can apply a compile flag in the metadata for the specific file(s), right inside Unity. Just select them in the Project panel, and apply from the Inspector panel. This is essential if you plan on using Cloud Build.
I think all the other answers are explaining how to disable MRC(Manual Reference Count) and enabling ARC(Automatic Reference Count).
To Use MRC(Manual Reference Count) i.e. Disabling ARC(Automatic Reference Count) on MULTIPLE files:
Select desired files at Target/Build Phases/Compile Sources in Xcode
PRESS ENTER
Type -fobjc-arc
Press Enter or Done
Add flag “-fno-objc-arc”.
Simple follow steps :
App>Targets>Build Phases>Compile Sources> add flag after class “-fno-objc-arc”
Just use the -fno-objc-arc flag in Build Phases>Compile Sources infront of files to whom you dont want ARC to be apply.
GO to App -> then Targets -> Build Phases -> Compile Source
Now, Select the file in which you want to disable ARC
paste this snippet "-fno-objc-arc" After pasting press ENTER
in each file where you want to disable ARC.
select project -> targets -> build phases -> compiler sources
select file -> compiler flags
add -fno-objc-arc
Following Step to to enable disable ARC
Select Xcode project
Go to targets
Select the Build phases section
Inside the build phases section select the compile sources.
Select the file which you do not want to disable ARC and add -fno-objc-arc