[Cmake] Generated header file

Ondrej Svetlik osvetlik at kerio . com
Mon, 20 Oct 2003 14:15:25 +0200


This is a cryptographically signed message in MIME format.

--------------ms080308040009070107090109
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hello Andy,

I know about it but :-), I'll try to add an example:


lib/tool/CMakeLists.txt:
PROJECT(tool C++)
ADD_EXECUTABLE(tool tool.cpp)

lib/CMakeLists.txt:
PROJECT(lib C++)
ADD_LIBRARY(lib lib.cpp)

SUBDIRS(tool)

ADD_CUSTOM_TARGET(generated.h
   ${tool_BINARY_DIR}/tool ${lib_BINARY_DIR}/generated.h -sometime
   DEPENDS tool
)

SET_SOURCEFILE_PROPERTIES(lib.cpp OBJECT_DEPENDS generated.h)

I need to build tool first, then run it to generate generated.h and then 
build lib. What's wrong? I allways get error no rule to build tool. 
What's wrong? I'm lost.

With regards

Ondrej Svetlik


Andy Cedilnik wrote:
> Hello Ondrej,
> 
> This is described in Mastering CMake on page 82. In general what you do
> is to add custom command which takes a source file and generates your
> header file. Then you add a source file property (DEPENDS) to the source
> file that includes header file and that is it.
> 
> Something like:
> 
> ADD_EXECUTABLE(foo foo.cxx)
> 
> ADD_CUSTOM_COMMAND(
>   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/bar.h
>   DEPENDS foo
>   COMMAND ${EXE_DIR}/foo
>   ARGS ${CMAKE_CURRENT_BINARY_DIR}/bar.h)
> 
> SET_SOURCEFILES_PROPERTIES(zot.cxx PROPERTIES DEPENDS  
> ${CMAKE_CURRENT_BINARY_DIR}/bar.h)
> 
> 			Andy
> 
> On Fri, 2003-10-17 at 12:09, Ondrej Svetlik wrote:
> 
>>I have a problem. I have one CMake project which generates a tool that 
>>produces a header file. In the second CMake project I need to run the 
>>tool before any other compilation is performed.
>>
>>Can anybody help?
>>
>>With regards
>>
>>Ondrej Svetlik
> 
> 

--------------ms080308040009070107090109
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIILejCC
BbkwggUioAMCAQICAxAACDANBgkqhkiG9w0BAQQFADCBuzELMAkGA1UEBhMCQ1oxFzAVBgNV
BAgTDkN6ZWNoIFJlcHVibGljMQ8wDQYDVQQHEwZQaWxzZW4xGzAZBgNVBAoTEktlcmlvIFRl
Y2hub2xvZ2llczEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSAwHgYDVQQDExdL
ZXJpbyBUZWNobm9sb2dpZXMgSW5jLjEjMCEGCSqGSIb3DQEJARYUaG9zdG1hc3RlckBrZXJp
by5jb20wHhcNMDMxMDE1MTQwNjE0WhcNMTIxMDE0MTQwNjE0WjCBzjELMAkGA1UEBhMCQ1ox
FzAVBgNVBAgTDkN6ZWNoIFJlcHVibGljMQ4wDAYDVQQHFAVQbHpl8jEbMBkGA1UEChMSS2Vy
aW8gVGVjaG5vbG9naWVzMSkwJwYDVQQKEyBjMjFmOTY5YjVmMDNkMzNkNDNlMDRmOGYxMzZl
NzY4MjESMBAGA1UECxMJTGlicmFyaWVzMRcwFQYDVQQDFA5PbmT4ZWogU3bsdGztazEhMB8G
CSqGSIb3DQEJARYSb3N2ZXRsaWtAa2VyaW8uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQDCQwsqMQJM2U/V1bwyfNessYeMwAHcVpndPWMsnXQJR/QSwaUDgFFztnKwaAnkU7iy
gMBMrTt9wU8Wyf+sc0Vd12ttNXObsbUBHm90SWvFHD1K9Zc6E6Xsms5SDwn/Ru8QnZct9bmH
qTXzTO8qXvkJ/yUONbXEvwb0JHcOUa1iDwIDAQABo4ICtDCCArAwCQYDVR0TBAIwADARBglg
hkgBhvhCAQEEBAMCBaAwDgYDVR0PAQH/BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggr
BgEFBQcDAjAdBgNVHQ4EFgQUg6mbG5BAS6xVWfkOLxqhvENIkekwgegGA1UdIwSB4DCB3YAU
7syy3jP2wxSTHetXsbu4O/Bu8oGhgcGkgb4wgbsxCzAJBgNVBAYTAkNaMRcwFQYDVQQIEw5D
emVjaCBSZXB1YmxpYzEPMA0GA1UEBxMGUGlsc2VuMRswGQYDVQQKExJLZXJpbyBUZWNobm9s
b2dpZXMxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEgMB4GA1UEAxMXS2VyaW8g
VGVjaG5vbG9naWVzIEluYy4xIzAhBgkqhkiG9w0BCQEWFGhvc3RtYXN0ZXJAa2VyaW8uY29t
ggEAMB0GA1UdEQQWMBSBEm9zdmV0bGlrQGtlcmlvLmNvbTAfBgNVHRIEGDAWgRRob3N0bWFz
dGVyQGtlcmlvLmNvbTBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vc2VjdXJlLmtlcmlvLmNv
bS9waHBraS9jYWNybC9rZXJpb19jYWNybC5jcmwwQgYJYIZIAYb4QgENBDUWM1BIUGtpL09w
ZW5TU0wgR2VuZXJhdGVkIEUtbWFpbCAoUy9NSU1FKSBDZXJ0aWZpY2F0ZTAtBglghkgBhvhC
AQIEIBYeaHR0cDovL3NlY3VyZS5rZXJpby5jb20vcGhwa2kvMCMGCWCGSAGG+EIBAwQWFhRu
c19yZXZva2VfcXVlcnkucGhwPzA5BglghkgBhvhCAQgELBYqaHR0cDovL3NlY3VyZS5rZXJp
by5jb20vcGhwa2kvL3BvbGljeS5odG1sMA0GCSqGSIb3DQEBBAUAA4GBAA7txvhRIlTvwOEL
FowlQyguGMI6Dt6NpBVLERkPo21u8kOMO8z7BAY0u7R7/pDakaVjmVLrUa89MVzEYKNYV63o
t7BSi3ArFDzHEIkwt7a6VPSMYzWjYs2L5XBx0QzReRe8wdQwV/+e4AEhSuyw9uX2cx6qlL7P
XB68mF6rwvbeMIIFuTCCBSKgAwIBAgIDEAAIMA0GCSqGSIb3DQEBBAUAMIG7MQswCQYDVQQG
EwJDWjEXMBUGA1UECBMOQ3plY2ggUmVwdWJsaWMxDzANBgNVBAcTBlBpbHNlbjEbMBkGA1UE
ChMSS2VyaW8gVGVjaG5vbG9naWVzMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkx
IDAeBgNVBAMTF0tlcmlvIFRlY2hub2xvZ2llcyBJbmMuMSMwIQYJKoZIhvcNAQkBFhRob3N0
bWFzdGVyQGtlcmlvLmNvbTAeFw0wMzEwMTUxNDA2MTRaFw0xMjEwMTQxNDA2MTRaMIHOMQsw
CQYDVQQGEwJDWjEXMBUGA1UECBMOQ3plY2ggUmVwdWJsaWMxDjAMBgNVBAcUBVBsemXyMRsw
GQYDVQQKExJLZXJpbyBUZWNobm9sb2dpZXMxKTAnBgNVBAoTIGMyMWY5NjliNWYwM2QzM2Q0
M2UwNGY4ZjEzNmU3NjgyMRIwEAYDVQQLEwlMaWJyYXJpZXMxFzAVBgNVBAMUDk9uZPhlaiBT
dux0bO1rMSEwHwYJKoZIhvcNAQkBFhJvc3ZldGxpa0BrZXJpby5jb20wgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBAMJDCyoxAkzZT9XVvDJ816yxh4zAAdxWmd09YyyddAlH9BLBpQOA
UXO2crBoCeRTuLKAwEytO33BTxbJ/6xzRV3Xa201c5uxtQEeb3RJa8UcPUr1lzoTpeyazlIP
Cf9G7xCdly31uYepNfNM7ype+Qn/JQ41tcS/BvQkdw5RrWIPAgMBAAGjggK0MIICsDAJBgNV
HRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYI
KwYBBQUHAwQGCCsGAQUFBwMCMB0GA1UdDgQWBBSDqZsbkEBLrFVZ+Q4vGqG8Q0iR6TCB6AYD
VR0jBIHgMIHdgBTuzLLeM/bDFJMd61exu7g78G7ygaGBwaSBvjCBuzELMAkGA1UEBhMCQ1ox
FzAVBgNVBAgTDkN6ZWNoIFJlcHVibGljMQ8wDQYDVQQHEwZQaWxzZW4xGzAZBgNVBAoTEktl
cmlvIFRlY2hub2xvZ2llczEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSAwHgYD
VQQDExdLZXJpbyBUZWNobm9sb2dpZXMgSW5jLjEjMCEGCSqGSIb3DQEJARYUaG9zdG1hc3Rl
ckBrZXJpby5jb22CAQAwHQYDVR0RBBYwFIESb3N2ZXRsaWtAa2VyaW8uY29tMB8GA1UdEgQY
MBaBFGhvc3RtYXN0ZXJAa2VyaW8uY29tMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9zZWN1
cmUua2VyaW8uY29tL3BocGtpL2NhY3JsL2tlcmlvX2NhY3JsLmNybDBCBglghkgBhvhCAQ0E
NRYzUEhQa2kvT3BlblNTTCBHZW5lcmF0ZWQgRS1tYWlsIChTL01JTUUpIENlcnRpZmljYXRl
MC0GCWCGSAGG+EIBAgQgFh5odHRwOi8vc2VjdXJlLmtlcmlvLmNvbS9waHBraS8wIwYJYIZI
AYb4QgEDBBYWFG5zX3Jldm9rZV9xdWVyeS5waHA/MDkGCWCGSAGG+EIBCAQsFipodHRwOi8v
c2VjdXJlLmtlcmlvLmNvbS9waHBraS8vcG9saWN5Lmh0bWwwDQYJKoZIhvcNAQEEBQADgYEA
Du3G+FEiVO/A4QsWjCVDKC4YwjoO3o2kFUsRGQ+jbW7yQ4w7zPsEBjS7tHv+kNqRpWOZUutR
rz0xXMRgo1hXrei3sFKLcCsUPMcQiTC3trpU9IxjNaNizYvlcHHRDNF5F7zB1DBX/57gASFK
7LD25fZzHqqUvs9cHryYXqvC9t4xggPPMIIDywIBATCBwzCBuzELMAkGA1UEBhMCQ1oxFzAV
BgNVBAgTDkN6ZWNoIFJlcHVibGljMQ8wDQYDVQQHEwZQaWxzZW4xGzAZBgNVBAoTEktlcmlv
IFRlY2hub2xvZ2llczEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSAwHgYDVQQD
ExdLZXJpbyBUZWNobm9sb2dpZXMgSW5jLjEjMCEGCSqGSIb3DQEJARYUaG9zdG1hc3RlckBr
ZXJpby5jb20CAxAACDAJBgUrDgMCGgUAoIICYTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcB
MBwGCSqGSIb3DQEJBTEPFw0wMzEwMjAxMjE1MjVaMCMGCSqGSIb3DQEJBDEWBBTmECJMuwtc
aA//daXmYM/JPcsI1TBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMC
AgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCB1AYJKwYBBAGC
NxAEMYHGMIHDMIG7MQswCQYDVQQGEwJDWjEXMBUGA1UECBMOQ3plY2ggUmVwdWJsaWMxDzAN
BgNVBAcTBlBpbHNlbjEbMBkGA1UEChMSS2VyaW8gVGVjaG5vbG9naWVzMR4wHAYDVQQLExVD
ZXJ0aWZpY2F0ZSBBdXRob3JpdHkxIDAeBgNVBAMTF0tlcmlvIFRlY2hub2xvZ2llcyBJbmMu
MSMwIQYJKoZIhvcNAQkBFhRob3N0bWFzdGVyQGtlcmlvLmNvbQIDEAAIMIHWBgsqhkiG9w0B
CRACCzGBxqCBwzCBuzELMAkGA1UEBhMCQ1oxFzAVBgNVBAgTDkN6ZWNoIFJlcHVibGljMQ8w
DQYDVQQHEwZQaWxzZW4xGzAZBgNVBAoTEktlcmlvIFRlY2hub2xvZ2llczEeMBwGA1UECxMV
Q2VydGlmaWNhdGUgQXV0aG9yaXR5MSAwHgYDVQQDExdLZXJpbyBUZWNobm9sb2dpZXMgSW5j
LjEjMCEGCSqGSIb3DQEJARYUaG9zdG1hc3RlckBrZXJpby5jb20CAxAACDANBgkqhkiG9w0B
AQEFAASBgGQv77sTvGHDY6OiLAG3SrqFF+7nZx4EY/0dHxmeJn8skzWHO1DzzFjyx/45BUSg
78J1eVyGX0cKOmdk60msJsiHsYCuJtS0u54IkqvfcbrZojOZZRoUmBRJOMjIs3kGKawxyjL1
L6WYBJI6NHh/lkYK/izh7M/+OkyTf/iNByEwAAAAAAAA
--------------ms080308040009070107090109--