I have been recently learning multi-threaded algorithms from Introduction to Algorithms (by Cormen, Rivest), third edition. And the preface of the book inspired me to use Cilk Plus extension for the same developed by MIT. However, I have not been able to get any article online to integrate it with my CodeBlocks IDE for utilization. Is there any set of commands to declare linker settings for the same?
Contents of the Folder C:\Programs(x86)\Intel\CilkTools
bin : contains ia32, intel64 folders (containing dlls) + other dlls and exe
doc : an html page and a jpg document
include : has CilkTools which has four .h files : cilkscreen.h, cilkveiw.h, fake_mutex.h, and lock_guard.h
opensrc : has a zip file (ZedGraph, open source graphing package)
visual studio and example files
You're confusing the compiler with the Cilk tools. First you'll need to install Intel C++ Composer and integrate that into your IDE. The Wikipedia article I found on Code Blocks claims that should work, but I don't know the details.
Then you'll want to install the Intel Cilk Plus SDK which provides you the Cilkscreen race detector and the Cilkview scalability analyzer. The Cilk tools come with an addin to integrate into Visual Studio, but you'll have to use the command line with other IDEs. The major benefit of the addin is being able to click on a callstack entry and go to that line in the Visual Studio editor. But the text version of the report is easy enough to read.
Don't ask why the names are so confusing. We (the development team) were not allowed to choose the names.
- Barry Tannenbaum
Intel Cilk Plus Development
I want to make my NSIS code more readable.
I need some guidelines regarding writing code section wise (like there is #region #endregion in C#) or any such information that can make writing NSIS code interesting and easy.
Please help me out.
Also there is Visual Studio (2008, 2008, 2010 and 2012) addin available called Visual & Installer.
It offers a lot of features like syntax highlighting, navigation, (GoTo definition, Goto reference, navigation bars, open file at cursor, ...) also IntelliSense support and much more.
Try here: http://www.unsigned-softworks.sk/visual-installer/
If you are looking for an IDE, you can try with SciTE that supports code folding, colorization, makensis compilation from the editor and compilation errors parsing. (BTW: Scite is not actually an IDE, but rather a very light yet powerful text editor with built-in support for colorizing and compiling programming languages)
With the latest versions of SciTE, you just need to uncomment the loading of NSIS support that is not enabled by default.
Also, there is the Development Environments section of the NSIS wiki that can point you some alternatives (like adding NSIS support to Eclipse).
I have a C++ Visual Studio project which I'm trying to compile for x86 and x64 architecture. I've googled and found a lot information how to do it and it seems to work, but it left me deeply confused about what is going on behind the curtains.
Apperently, the only difference in the settings is a switch in the linker command line flags (to be precise, it's the /MACHINE flag).
If that's the case however, then the object files of the compilation must be platform independent - which is somehow the exact opposite of what I always assumed it to be, since object files are supposed to be sequences of machine code which in turn should be platform dependent.
So, my question is: which part(s) of the build process does not behave the way I thought it would?
Thanks for your time and wisdom!
Michael
When compiling for 32-bit x86, Visual Studio uses the compiler \Program Files\Microsoft Visual Studio 10.0\VC\bin\cl.exe. When compiling for 64-bit x86, Visual Studio uses the compiler \Program Files\Microsoft Visual Studio 10.0\VC\bin\amd64\cl.exe. The first compiler produces 32-bit object files, the second produces 64-bit object files. This can be seen by running dumpbin.exe on the object files to see their specified architecture.
The compiler invocation remains the same (more or less) -- what changes is the executable $PATH that is set before building. By pointing the PATH to the 32-bit or 64-bit directory, it sneakily changes the whole set of programs that is run to build your project. You can see this by looking at the Project Properties > Configuration Properties > VC++ Directories > Executable Directories, and clicking on "Edit". In the "Inherited Values" box you'll see the path for the current Configuration and Platform.
Is it possible to use GNU gettext with MS Visual C++? Does someone know where to find a sample project that compiles under Visual C++?
Update:
Thanks to Sorin Sbarnea for his comments which help me to put all the pieces together:
I'm used to the Delphi version of gettext where you simply compile the unit gnugettext.pas with your project, that is why I was simply trying to compile gettext.h with my MSVC project. It might work for other C++ compilers but not with MSVC.
The FAQ of GNU gettext explains how to do it with MSVC by using precompiled DLLs. But there are no links to the DLLs and these DLLs aren't in the main download. They must be downloaded separatly from the ftp site. You will need 2 files for the dlls:
gettext-runtime for win32
libiconv for win32
And if you need tools to extract the strings from the exe, you also need:
gettext-tools for win32
I haven't tried it yet with MSVC, but now I think it will works.
Clearly I know lots of project that are using gettext in MSVC. Also if you are considering using GNU gettext runtime in a commercial, closed-source, project be aware that the runtime library is LGPL. This means mainly that you need to open source any modification you may do to the gettext runtime library (not your code).
Also, gettext utilities are using GPL license - but this is not so important because you don't need/want to distribute them.
For Win32 you should get the gettext runtime from Gnome FTP because the build is newer than the one from GNU.
Regarding open-source software take a look at PoEdit.
GNU gettext-0.18.3.2 Visual C++(MSVC) runtime download, it works well for me.
Since Emacs and VIM are just text editors, does that mean I have to copy paste the code into an IDE so it can be compiled?
Well you edit your files in emacs or vim. Then you save them and then you invoke the target language compiler.
Typically, C projects would use Makefiles that are meant to track down the files needed to be compiled into a program, and their dependencies. Then you typically type make in the command line and make reads the Makefile you authored and takes care of invoking the compiler on the files etc...
For Java, people often use Ant or Maven to build their software.
...I know that my answer is vague, the list of languages and build tools is long, you should narrow down your question.
Very often, under Linux, when I don't need a massive IDE, I'm using Pida. It brings me a list view of the different Vim buffers, a convenient treeview of the filesystem and a shell: see screenshot.
See:
GNU Make
CMake
Autotools
Ant
Maven
[insert your favorite build tool here]
Text editors just edit files.
Compilers just compile files.
IDE's just bring files and the compiler together in a convenient way.
So... No, you don't need to copy/paste the code into an IDE, however you do have to make sure your compiler (IDE in your case) knows where to find the file you want to compile.
You don't need an IDE to compile a program. You just need a compiler. Emacs/Vim are text editors that allow you to write your program. You then call the compiler and it will do the compilation.
Also, Emacs and Vim are scriptable and have routines that allow you to call a compiler directly on the file you're editing.
In vim, you type :make. In emacs, you type a M-x compile-frobnicate style command which I'm sure someone will provide.
Apart from what already has been said, take a few tutorials to learn how to code/compile with vim and Emacs:
Intro to C/C++ Programming with vim
Using Emacs for programming
In VIM (with no extensions installed) something like
! /path/to/make (C/C++ world)
or
! /path/to/ant build (Java world)
It depends on your compiler, platform, and program. Most, like gcc, can be called from the command line (or from within either of those editors) although you may have to first write a makefile for the linker. Other compilers are integrated into IDEs (or are difficult to control externally), although even these won't require copy/pasting. Simply save your program and open it from within the IDE.
So far: IDE = a poor editor + compiler + debugger + other_unnecessary_stuffs
Go get a compiler and a debugger and you do not need an IDE anymore
Many IDEs can detect if the source file is changed by an external program, and prompt you to reload. I know this is the case with MS Visual Studio and CodeWarrior.
This is useful if your project is already managed by the IDE and you don't want to move it to something like Make, for example if you're on a team who mostly use the IDE, but you want to use a different editor. Simply edit and save the file in vim or emacs, switch back to your editor and hit Compile.
No, you don't need an IDE to compile code that you write in emacs.
I use emacs very extensively for building .NET code in C#.
The .NET runtime includes compilers.
I downloaded the .NET SDK, which includes other tools, like nmake, msbuild, XML tools, debuggers and so on.
I grabbed csharp-mode.el, which teaches emacs how to highlight and indent C# modules.
C-x C-e , for me, runs the command compile. I type in msbuild there, and emacs runs the build, using the .NET SDK tools.
I do something similar with C code, and with Java code, and with Javascript.
The same idea will work with other languages as well.
For Visual Studio integration, I highly recommend ViEmu.
It basically turns the editor in VS into Vim. I use it every day at work, and it is very stable. I can't imagine working without it!
(source: viemu.com)