How to debug cmake target after install - windows

I have a cross-platform project which uses cmake in order to generate Visual Studio solution files. The project has external dependencies (.dlls, resources etc) and the only place where the executable can be run is the installation directory. In that directory I have access all the resources, plugins, translations etc. I can install the project both in debug or release in that directory.
How can I debug a project in the installed location?
There are two problems with this case:
Sometimes I may debug the main application (Main.exe) (a target in cmake project)
Sometimes I may debug some plugins that Main.exe loads when started (I have a different cmake project for the plugins)
Is there a clean way of doing this in Visual C++ without actually create some custom project that is configured to start each time the Main.exe from the installed location? ("C:\Program Files\MainProject\Main.exe" )
Thank you,
Iulian

I managed to do it by 'configuring' with cmake a .user file for the specified project.
The only thing that the user needs to do is to use a template like in this bitbucket project.
In the project you can find a template file.
The cmake script command needed is:
CONFIGURE_FILE(
"${PROJECT_SOURCE_DIR}/scripts/windows/VS201x_Template.vcxproj.user.in"
"${PROJECT_BINARY_DIR}/INSTALL.vcxproj.user"
)
If you need a custom .user file you can always do it manually by saving the generated Visual Studio and creating a template from it similarly to the above example.

Related

Generate Visual Studio Project File to build a library with qmake syntax and where to find the project file?

I have an old script to create Visual Studio Project Files to build libraries. The syntax is
cd Kernel
cd core
qmake -t vclib
cd ccMigration
qmake -t vclib
cd ..
and so on for all of the different directories.
I understand why we use qmake and vclib, but what I am not sure is what is the use of -t in this line:
qmake -t vclib
Looking at this : http://doc.qt.io/archives/qt-5.5/qmake-platform-notes.html it says:
Creating Visual Studio Project Files This section describes how to
import an existing qmake project into Visual Studio. qmake is able to
take a project file and create a Visual Studio project that contains
all the necessary information required by the development environment.
This is achieved by setting the qmake project template to either vcapp
(for application projects) or vclib (for library projects).
This can also be set using a command line option, for example:
qmake -tp vc
Why do they use -tp and is the old script syntax correct by using -t?
After I run the script it takes about 1/2 seconds and where can I find the project files for Visual Studio?
Finally, When I open the project files how can I build a library using Visual Studio? Can someone point me to a place where I can read some material?
Thank you for all the help!
Edit: I ran the script and it created .vcproj files in the directories that qmake was run. Example: In folder Kernel -> core it created ccCore.vcproj project file. When I open the file in Visual Studio 2017 it wanted me to perform a One-way upgrade that will automatically make functional changes to the project in order to open it. Is this okay?

OpenCV 3.0 missing Libraries

I am trying to install OpenCV 3.0 Aplha. I'm following these instructions
http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html
After I download and extract the package, I am supposed to have all the pre-built libraries in the folder :opencv\build\x86\vc12\lib but I don't see them in this folder. This folder only has opencv_ts300.lib and opencv_world300.lib. All the other libraries seems to be missing. Also the bin folder doesn't have the dlls. But statlib folder does seems to have all the static libraries.
I also tried to build the libraries from source, and as per the instructions after building the OpeCVALL.sln in visual studio, I am supposed to have the libraries in the x86\vc12 but the libraries doesn't seem to be building in this folder. After digging through the folders I see that the opencv libraries are found in bin/debug and bin/release folders. I thought I would use these for linking in visual studio but I am not finding the header files in build/include folder
I don't see any of these issues with Opencv 2.49. Any help in debugging this issue with 3.0 would be highly appreciated.
Summary: After I build from source/ or pre-built package, I am able to run the sample applications. But I am not finding the headers and libraries to create a visual studio project from scratch.
Okay I figured out what is going wrong here...
Build INSTALL project manually from the OpenCV.sln by right clicking - > build. This will create the libraries in build/install/x86/vc12 folder. This is where lib,bin and staticlib folders are now residing. Also the include files are in build/install/include.
Library files : located in your cmake folder's lib/debug(or release) folder
DLL files : located in cmake folder's bin/debug(or release) folder
Header files : located in opencv3's build/include folder

openRTMFP cumulus how to compile and install

i've just downloaded cumulus, POCO, OpenSSL and LuaJIT and visual studio. now i'm trying to compile it as it said in instruction here
however i've never used visual studio and i've never programed on visual c. so i'm stuck at the very begining.
in instruction i've put link above said "Visual Studio 2008/2010 solution and project files are included. It searchs external librairies in External/lib folder and external includes in External/include folder in the root Cumulus folder. So you must put POCO, OpenSSL and LuaJIT headers and libraries in these folders.". i tryed everything but compiler can't find 'Poco/foundation.h'.
and it seems to me if i deal with this error there will more over.
so if someone has expirience in compiling cumulus-server please help me to deal with it.
thanks a lot for you help!
step 1 - create 2 files
cumulus_root_folder/external/lib
cumulus_root_folder/external/include
step 2 - put the headers into the include folder from the other 3 dependent projects
dependent projects are: openssl, poco, luajit.
put openssl file into the external/include from openssl-version/include
put Poco file into the external/include from poco-version/Foundation/include
put SAX, DOM, XML files into the external/include/Poco from poco-version/XML/include/Poco
put Net file into the external/include/Poco from poco-version/Net/include/Poco
put Util file into the external/include/Poco from poco-version/Util/include/Poco
put LuaJIT's headers with the same way.
now you can build cumuluslib.
step 3 - Open your cumuluslib project with specific visual studio version then build it.
When it's done you can see the lib file at cumulus_root_folder/cumuluslib/lib
step 4 - now you have to build the 3 dependent projects and put their lib files to cumulus_root_folder/external/lib its tough mission, maybe you will need 32-bit windows. Do not forget: when you building poco, do it with debug if not, some of your files will be missing.
When you done with building and gathering lib files you can build cumulusserver. Same way as cumuluslib. Then your cumulus.exe will be in cumulus_root_folder/cumulusserver/debug

Visual Studio 2010 can't see /bin library of OpenCV

I'm trying to use OpenCv 2.2 in Visual Studio 2010.
I've configured everything by instruction:
http://opencv.willowgarage.com/wiki/VisualC%2B%2B
and by instruction from the book:
So I've added all /lib and /include paths.
When I build project, it compiles and before starting app, VS displays an error message that opencv_core220d.dll is missing.
This file is in C:/OpenCV2.2/bin as all .dll files. If I add this file to my working directory - it will be fine. Then VS displays error about every .dll file that I added in Linker-Input configuration ( but with .lib extension ).
So, if I add all .dlls file that I've added as .lib in Linker configuration - to my working directory, project will start.
But why? Why VC doesn't see OpenCV2.2/bin folder? Where is this pointed?
Because it doesn't know to look there by default. However, it does know to check the current directory for the DLLs.
You can tell it where to look by adding C:/OpenCV2.2/bin to your Path variable, or if you would rather not muck up your global Path you can set the Environment variable local to the C++ project.
I think that is the syntax for appending to the Path in VS2010, but I'm not sure, so Google it if that doesn't work :)

what is make file?

What is the need of Make File? IN which situation we have to alter that file for Brew Application?
The makefile is usually used to build for the device (ARM) build of the project (with visual studio being used to build for the emulator). Visual Studio will run the makefile when you do the device build.
Small addition - makefiles used in Visual Studio only for MOD1 application, whereas they aren't used for compiling MOD apps.
As joseph said makefiles are used to build the source files in linux projects, advantage of makefile is you can write a general script irrespective of dependency files. and even if you change a single file in your file then you dont have to compile the whole source code again. only the file which is changed is compiled again and the files which are dependent on them are compiled. you can check out tutorial on the makefile at http://sagarsakre.blogspot.in/2012/09/understanding-makefile-for-beginners.html .....

Resources