MS VC++ 2010 Build

Description

Just downloaded zeromq-2.1.4 and I am a complete newbie. I am building ZeroMQ on MS VS C++ 2010 and I ran into a couple of issues:

(1) I wanted to test both 32 bit and 64 bit clients. There was no 64 bit platform in the zeromq-2.1.4\\builds\\msvc
msvc.sln
(2) When it upgraded the msvc solution (I guess it was in VS C++ 2008) it gave me several quite harmless warnings about the target path. For example:

warning MSB8012:
TargetPath(E:\\ZeroMq\\zeromq-2.1.4\\builds\\msvc\\Debug
libzmq.dll) does not match the Linker's OutputFile property value (E:\\ZeroMq\\zeromq-2.1.4\\lib
libzmq.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).

(3) The output Files (linker->Output File) for both Debug and Release Win32 where set to ../../../lib/ libzmq.dll. I think I’m just lazy but I personally like to be able to just build all of them and have them in one place. Then reference the correct platform/configuration as the clients require. Perhaps this is the convention that was selected; however, I would like to find out if it’s just me or if ../../../lib/$(Platform)/$(Configuration)/libzmq.dll would be acceptable?

(4) When I did do the build it provided some additional warnings that seem to be harmless about “this” used in base member initialize list like the following:

warning C4355: 'this' : used in base member initializer list e:\\zeromq\\zeromq-2.1.4\\src
xsub.cpp

However, I’m not entirely sure if these are really issues, it could just be my inexperience. I thought it might be helpful to address them ahead of time as I could always undo them. Here were my resolutions of the issues I describe

(1) Added a 64Bit platform and went through each configure and made sure all the correct C++ properties were set for libzmq, local_lat, local_thr, remote_lat, and remote_thr projects.

(2) I removed all the harmless warnings about TargetPath in libzmq, local_lat, local_thr, remote_lat, and remote_thr for MS VC++ 2010.

What I did was (for all configurations and all platforms):
a. Changed Configuration Properties > General>Output Directory to: $(SolutionDir)$(Platform)\\$(Configuration)

b. Changed Configuration Properties > General>Intermediate Directory to: $(Platform)\\$(Configuration)

c. Changed Configuration Properties->Linker->Output file to: $(OutDir)$(TargetFileName)

(3) After making changes in (2) above I had to get the files to the lib and bin directories as they were:

a. For libzmq (for all configurations and all platforms) I added the following to Configuration Properties->Build Events->Post-Build Event:

xcopy $(TargetPath) ..\\..\\..\\lib\\$(Platform)\\$(Configuration)
. /Y /D
xcopy $(TargetDir)$(TargetName).pdb ..\\..\\..\\lib\\$(Platform)\\$(Configuration)
. /Y /D

Output files or libzmq will be in:
i. Lib\\Win32
Debug
ii. Lib\\Win32
Release
iii. Lib\\x64
Debug
iv. Lib\\x64
Release

b. For local_lat, local_thr, remote_lat (for all configurations and all platforms) I added the following to Configuration Properties->Build Events->Post-Build Event:

xcopy $(TargetPath) ..\\..\\..\\bin\\$(Platform)\\$(Configuration)
. /Y /D
xcopy $(TargetDir)$(TargetName).pdb ..\\..\\..\\bin\\$(Platform)\$(Configuration)
. /Y /D

Output files or local_lat, local_thr, remote_lat will be in:
i. Bin\\Win32
Debug
ii. Bin\\Win32
Release
iii. Bin\\x64
Debug
iv. Bin\\x64
Release

In not sure if any of these suggestions are helpful or useful to anyone. It is probably just a personal preference. If it would be helpful I can submit the new msvc10.slv and all the new vcxproj files for the changes I describe above (libzmq.vcxproj, local_lat.vcxproj, local_thr.vcxproj, remote_lat.vcxproj, and remote_thr.vcxproj). If it is helpful to someone could anyone point me in the direction where I could provide these?

Environment

None

Status

Assignee

Unassigned

Reporter

el3max

Labels

None

Priority