[Cmake] Multiplatform build in a shared source code tree ???

Kenneth D. Weinert Ken.Weinert@ihs.com
Wed, 5 Feb 2003 06:41:50 -0700


--=.wuy3q9PLgPpq)k
Content-Type: multipart/mixed;
 boundary="Multipart_Wed__5_Feb_2003_06:41:50_-0700_0821e720"


--Multipart_Wed__5_Feb_2003_06:41:50_-0700_0821e720
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

On Wed, 5 Feb 2003 14:21:16 +0100
"Pampel, Holger (Holger)" <hpampel@lucent.com> wrote:

> CMakers,
> 
> CMake seems not to allow to share the built tree for multiple platforms
> as objects are stored directly in the source directories or (for MSVC in
> a common top level dir). Has anyone out there a practical solution for
> my problem or do I really have to create separate build trees for each
> platform ? The 18-page manual does not explain, how to go ahead with this ...

CMake does it a bit different than you have it currently. If you were
to do the following:

	mkdir i686
	cd i686
	cmake ..

then all of the platform specific stuff would be created in that
directory and you can compile from within there.

There are some CMake macros that help determine the system you're
on. I've attached an expansion to CMakeDetermineSystem since in my
environment I have to support SunOS both on sparc and on i386
architecture. I basically copied CMakeDetermineSystem and named it
CMakeDeterminePlatform. It sets the macro CMAKE_PLATFORM which will
look like: Linux-unknown, SunOS-sparc, SunOS-i386. It also sets all of
the same macros that CMakeDetermineSystem does, but I didn't want the
next update of CMake to over-write my changes :)


-- 
/~\ The ASCII        Ken Weinert   Ken.Weinert@ihs.com 
\ / Ribbon Campaign  303-858-6956 (V) 303-705-4258 (F)
 X  Against HTML     GnuPG: 9274F1CE  GnuPG available at http://www.gnupg.org/
/ \ Email!           1D87 3720 BB77 4489 A928  79D6 F8EC DD76 9274 F1CE
Backup not found: (A)bort (R)etry (T)hrowup


--Multipart_Wed__5_Feb_2003_06:41:50_-0700_0821e720
Content-Type: application/octet-stream;
 name="CMakeDeterminePlatform.cmake"
Content-Disposition: attachment;
 filename="CMakeDeterminePlatform.cmake"
Content-Transfer-Encoding: base64

IyBUaGlzIG1vZHVsZSBpcyB1c2VkIGJ5IHRoZSBNYWtlZmlsZSBnZW5lcmF0b3IgdG8gZGV0ZXJt
aW4gdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CiMgQ01BS0VfU1lTVEVNX05BTUUgLSBvbiB1bml4
IHRoaXMgaXMgdW5hbWUgLXMsIGZvciB3aW5kb3dzIGl0IGlzIFdpbmRvd3MKIyBDTUFLRV9TWVNU
RU1fVkVSU0lPTiAtIG9uIHVuaXggdGhpcyBpcyB1bmFtZSAtciwgZm9yIHdpbmRvd3MgaXQgaXMg
ZW1wdHkKIyBDTUFLRV9TWVNURU1fUFJPQ0VTU09SIC0gb24gdW5peCB0aGlzIGlzIHVuYW1lIC1w
LCBmb3Igd2luZG93cyBpdCBpcyBlbXB0eQojIENNQUtFX1NZU1RFTSAtICR7Q01BS0VfU1lTVEVN
fS0ke0NNQUtFX1NZU1RFTV9WRVJTSU9OfSwgZm9yIHdpbmRvd3M6ICR7Q01BS0VfU1lTVEVNfQoj
IENNQUtFX1BMQVRGT1JNIC0gJHtDTUFLRV9TWVNURU19LSQoQ01BS0VfU1lTVEVNX1BST0NFU1NP
Un0sIGZvciB3aW5kb3dzOiAke0NNQUtFX1NZU1RFTX0KCiMKIyAgRXhwZWN0ZWQgdW5hbWUgLXMg
b3V0cHV0OgojCiMgQUlYICAgICAgICAgICAgICAgICAgICAgICAgICAgQUlYICAKIyBCU0QvT1Mg
ICAgICAgICAgICAgICAgICAgICAgICBCU0QvT1MgIAojIEZyZWVCU0QgICAgICAgICAgICAgICAg
ICAgICAgIEZyZWVCU0QgIAojIEhQLVVYICAgICAgICAgICAgICAgICAgICAgICAgIEhQLVVYICAK
IyBJUklYICAgICAgICAgICAgICAgICAgICAgICAgICBJUklYICAKIyBMaW51eCAgICAgICAgICAg
ICAgICAgICAgICAgICBMaW51eCAgCiMgTmV0QlNEICAgICAgICAgICAgICAgICAgICAgICAgTmV0
QlNEICAKIyBPcGVuQlNEICAgICAgICAgICAgICAgICAgICAgICBPcGVuQlNEICAKIyBPRlMvMSAo
RGlnaXRhbCBVbml4KSAgICAgICAgICBPU0YxICAKIyBTQ08gT3BlblNlcnZlciA1ICAgICAgICAg
ICAgICBTQ09fU1YgIAojIFNDTyBVbml4V2FyZSA3ICAgICAgICAgICAgICAgIFVuaXhXYXJlICAK
IyBTQ08gVW5peFdhcmUgKHByZSByZWxlYXNlIDcpICBVTklYX1NWICAKIyBTQ08gWEVOSVggICAg
ICAgICAgICAgICAgICAgICBYZW5peCAgCiMgU29sYXJpcyAgICAgICAgICAgICAgICAgICAgICAg
U3VuT1MgIAojIFN1bk9TICAgICAgICAgICAgICAgICAgICAgICAgIFN1bk9TICAKIyBUcnU2NCAg
ICAgICAgICAgICAgICAgICAgICAgICBUcnU2NCAgCiMgVWx0cml4ICAgICAgICAgICAgICAgICAg
ICAgICAgVUxUUklYICAKIyBjeWd3aW4gICAgICAgICAgICAgICAgICAgICAgICBDWUdXSU5fTlQt
NS4xCiMgTWFjT1NYICAgICAgICAgICAgICAgICAgICAgICAgRGFyd2luCiAgCklGKFVOSVgpCiAg
RklORF9QUk9HUkFNKENNQUtFX1VOQU1FIHVuYW1lIC9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9i
aW4gKQogIElGKENNQUtFX1VOQU1FKQogICAgRVhFQ19QUk9HUkFNKHVuYW1lIEFSR1MgLXMgT1VU
UFVUX1ZBUklBQkxFIENNQUtFX1NZU1RFTV9OQU1FKQogICAgRVhFQ19QUk9HUkFNKHVuYW1lIEFS
R1MgLXIgT1VUUFVUX1ZBUklBQkxFIENNQUtFX1NZU1RFTV9WRVJTSU9OKQogICAgRVhFQ19QUk9H
UkFNKHVuYW1lIEFSR1MgLXAgT1VUUFVUX1ZBUklBQkxFIENNQUtFX1NZU1RFTV9QUk9DRVNTT1Ip
CiAgICBTRVQoQ01BS0VfVU5BTUUgJHtDTUFLRV9VTkFNRX0gQ0FDSEUgSU5URVJOQUwgInVuYW1l
IGNvbW1hbmQiKQogIEVORElGKENNQUtFX1VOQU1FKQpFTFNFKFVOSVgpCiAgSUYoV0lOMzIpCiAg
ICBTRVQgKENNQUtFX1NZU1RFTV9OQU1FICJXaW5kb3dzIikKICAgIFNFVCAoQ01BS0VfU1lTVEVN
X1ZFUlNJT04gIiIpCiAgICBTRVQgKENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgIiIpCiAgRU5ESUYo
V0lOMzIpCkVORElGKFVOSVgpCgpJRihOT1QgQ01BS0VfU1lTVEVNX05BTUUpCiAgU0VUKENNQUtF
X1NZU1RFTV9OQU1FICJVbmtub3duT1MiKQpFTkRJRihOT1QgQ01BS0VfU1lTVEVNX05BTUUpCgoj
IGZpeCBmb3IgQlNEL09TICwgcmVtb3ZlIHRoZSAvCklGKENNQUtFX1NZU1RFTV9OQU1FIE1BVENI
RVMgQlNELk9TKQogIFNFVChDTUFLRV9TWVNURU1fTkFNRSBCU0RPUykKRU5ESUYoQ01BS0VfU1lT
VEVNX05BTUUgTUFUQ0hFUyBCU0QuT1MpCgojIGZpeCBmb3IgQ1lHV0lOIHdoaWNoIGhhcyB3aW5k
b3dzIHZlcnNpb24gaW4gaXQgCklGKENNQUtFX1NZU1RFTV9OQU1FIE1BVENIRVMgQ1lHV0lOKQog
IFNFVChDTUFLRV9TWVNURU1fTkFNRSBDWUdXSU4pCkVORElGKENNQUtFX1NZU1RFTV9OQU1FIE1B
VENIRVMgQ1lHV0lOKQoKIyBzZXQgQ01BS0VfU1lTVEVNIHRvIHRoZSBDTUFLRV9TWVNURU1fTkFN
RQpTRVQoQ01BS0VfU1lTVEVNICAke0NNQUtFX1NZU1RFTV9OQU1FfSkKIyBpZiB0aGVyZSBpcyBh
IENNQUtFX1NZU1RFTV9WRVJTSU9OIHRoZW4gYWRkIGEgLSR7Q01BS0VfU1lTVEVNX1ZFUlNJT059
CklGKENNQUtFX1NZU1RFTV9WRVJTSU9OKQogIFNFVChDTUFLRV9TWVNURU0gJHtDTUFLRV9TWVNU
RU19LSR7Q01BS0VfU1lTVEVNX1ZFUlNJT059KQpFTkRJRihDTUFLRV9TWVNURU1fVkVSU0lPTikK
CiMgaWYgdGhlcmUgaXMgYSBDTUFLRV9TWVNURU1fUFJPQ0VTU09SIHRoZW4gYWRkIGEgLSR7Q01B
S0VfU1lTVEVNX1BST0NFU1NPUn0KSUYoQ01BS0VfU1lTVEVNX1BST0NFU1NPUikKICBTRVQoQ01B
S0VfUExBVEZPUk0gJHtDTUFLRV9TWVNURU1fTkFNRX0tJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09S
fSkKRU5ESUYoQ01BS0VfU1lTVEVNX1BST0NFU1NPUikKCgojIGNvbmZpZ3VyZSB2YXJpYWJsZXMg
c2V0IGluIHRoaXMgZmlsZSBmb3IgZmFzdCByZWxvYWQKQ09ORklHVVJFX0ZJTEUoJHtDTUFLRV9S
T09UfS9Nb2R1bGVzL0NNYWtlU3lzdGVtLmNtYWtlLmluIAogICAgICAgICAgICAgICAke0NNQUtF
X0JJTkFSWV9ESVJ9L0NNYWtlU3lzdGVtLmNtYWtlIElNTUVESUFURSkKCg==

--Multipart_Wed__5_Feb_2003_06:41:50_-0700_0821e720--

--=.wuy3q9PLgPpq)k
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+QRSk+OzddpJ08c4RAqq/AJ9Qv8qp7hJCQkyP4f1/EMYsbapDrACfTto8
QLa0ykMmk5k8qCY901sAHcU=
=xsh1
-----END PGP SIGNATURE-----

--=.wuy3q9PLgPpq)k--