Re: [CMake] Make project name a target

2009-09-11 Thread David Cole
When you say "make the project name a target" what do you mean by that?
(1) internally create a CMake target with the given name?
(2) create a makefile target with that name that builds all the cmake
targets in that cmake project?
(3) something else?

(1) is probably not feasible for most folks -- because many people use the
same name for their PROJECT statement and the main library or executable for
that project which is already a cmake target (and a makefile target)
with that name.


On Fri, Sep 11, 2009 at 3:51 AM, Marcel Loose  wrote:

> Hi all,
>
> I was wondering whether it's a good idea to make the project name (i.e.
> the argument to the 'project' command) a target.
>
> Rationale: I have a project that consists of numerous sub-projects and I
> would like to be able to build some of these separately. Wrapping the
> 'project' command in a macro is not a solution, because AFAIK CMake
> *must* see a 'project' command in the top-level CMakeLists.txt file; a
> 'myproject' macro, wrapping the 'project' command, will not do.
>
> Any comments?
>
> Best regards,
> Marcel Loose.
>
>
> ___
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Re: [CMake] Make project name a target

2009-09-11 Thread Marcel Loose
Hi David,

I don't see the exact difference between (1) and (2). And yes, I was
thinking of using the project name as a target. You are right, that it
might cause clashes with existing projects, though :-(

We use the convention that project names are always capitalized, so we
usually don't run into problems.

Is there a nifty trick to wrap the 'project' command? I never succeeded
in doing that.

Best regards,
Marcel Loose.


On Fri, 2009-09-11 at 07:09 -0400, David Cole wrote:
> When you say "make the project name a target" what do you mean by
> that?
> 
> 
> (1) internally create a CMake target with the given name?
> (2) create a makefile target with that name that builds all the cmake
> targets in that cmake project?
> (3) something else?
> 
> 
> (1) is probably not feasible for most folks -- because many people use
> the same name for their PROJECT statement and the main library or
> executable for that project which is already a cmake target (and a
> makefile target) with that name.
> 
> 
> 
> On Fri, Sep 11, 2009 at 3:51 AM, Marcel Loose  wrote:
> Hi all,
> 
> I was wondering whether it's a good idea to make the project
> name (i.e.
> the argument to the 'project' command) a target.
> 
> Rationale: I have a project that consists of numerous
> sub-projects and I
> would like to be able to build some of these separately.
> Wrapping the
> 'project' command in a macro is not a solution, because AFAIK
> CMake
> *must* see a 'project' command in the top-level CMakeLists.txt
> file; a
> 'myproject' macro, wrapping the 'project' command, will not
> do.
> 
> Any comments?
> 
> Best regards,
> Marcel Loose.
> 
> 
> ___
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
> 
> 

___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Make project name a target

2009-09-11 Thread Jeroen Dierckx
On Fri, Sep 11, 2009 at 4:22 PM, Marcel Loose  wrote:
> Hi David,
>
> I don't see the exact difference between (1) and (2). And yes, I was
> thinking of using the project name as a target. You are right, that it
> might cause clashes with existing projects, though :-(
>
> We use the convention that project names are always capitalized, so we
> usually don't run into problems.
>
> Is there a nifty trick to wrap the 'project' command? I never succeeded
> in doing that.

I did this once inside a macro, and that should work as expected. The
code of the macro should behave just as if it was copy-pasted to the
place where you call the macro, so scope and such will be that of the
place where you call it.

Greetings,
JeDi


>
> Best regards,
> Marcel Loose.
>
>
> On Fri, 2009-09-11 at 07:09 -0400, David Cole wrote:
>> When you say "make the project name a target" what do you mean by
>> that?
>>
>>
>> (1) internally create a CMake target with the given name?
>> (2) create a makefile target with that name that builds all the cmake
>> targets in that cmake project?
>> (3) something else?
>>
>>
>> (1) is probably not feasible for most folks -- because many people use
>> the same name for their PROJECT statement and the main library or
>> executable for that project which is already a cmake target (and a
>> makefile target) with that name.
>>
>>
>>
>> On Fri, Sep 11, 2009 at 3:51 AM, Marcel Loose  wrote:
>>         Hi all,
>>
>>         I was wondering whether it's a good idea to make the project
>>         name (i.e.
>>         the argument to the 'project' command) a target.
>>
>>         Rationale: I have a project that consists of numerous
>>         sub-projects and I
>>         would like to be able to build some of these separately.
>>         Wrapping the
>>         'project' command in a macro is not a solution, because AFAIK
>>         CMake
>>         *must* see a 'project' command in the top-level CMakeLists.txt
>>         file; a
>>         'myproject' macro, wrapping the 'project' command, will not
>>         do.
>>
>>         Any comments?
>>
>>         Best regards,
>>         Marcel Loose.
>>
>>
>>         ___
>>         Powered by www.kitware.com
>>
>>         Visit other Kitware open-source projects at
>>         http://www.kitware.com/opensource/opensource.html
>>
>>         Please keep messages on-topic and check the CMake FAQ at:
>>         http://www.cmake.org/Wiki/CMake_FAQ
>>
>>         Follow this link to subscribe/unsubscribe:
>>         http://www.cmake.org/mailman/listinfo/cmake
>>
>>
>
> ___
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: 
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Make project name a target

2009-09-11 Thread Alexander Neundorf
On Friday 11 September 2009, David Cole wrote:
> When you say "make the project name a target" what do you mean by that?
> (1) internally create a CMake target with the given name?
> (2) create a makefile target with that name that builds all the cmake
> targets in that cmake project?

I think this should be more or less the same as invoking make without specific 
target in _BINARY_DIR.

Alex
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Make project name a target

2009-09-11 Thread Marcel Loose
Hi JeDi,

If you look carefully, you will notice that, when you create a project
through a macro (e.g. myproject), CMake will create a dummy project
named "Project" and assume you're using C and C++ as default languages.

Note that I intentionally chose a non-supported language, CPP, in the
example below. Look at the line printing PROJECT_NAME. But you'll notice
a significant difference in output anyway.

Best regards,
Marcel Loose.


CMakeLists.txt with direct call of project() command:

$ pwd
/home/loose/work/cmake/build

$ cat ../proj/CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
message(STATUS "PROJECT_NAME = ${PROJECT_NAME}")
project(main CPP)

$ cmake -DCMAKE_MODULE_PATH:PATH=$HOME/work/cmake/proj ../proj
-- PROJECT_NAME = 
CMake Error: Error required internal CMake variable not set, cmake may
be not be built correctly.
Missing variable is:
CMAKE_CPP_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may
be not be built correctly.
Missing variable is:
CMAKE_CPP_COMPILER
CMake Error: Could not find cmake module
file:/home/loose/work/cmake/build/CMakeFiles/CMakeCPPCompiler.cmake
CMake Error: Could not find cmake module file:CMakeCPPInformation.cmake
CMake Error: CMAKE_CPP_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!


CMakeLists.txt with call of project() through myproject macro:
-
$ cat CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
message(STATUS "PROJECT_NAME = ${PROJECT_NAME}")
include(myproject)
myproject(main CPP)

$ cmake -DCMAKE_MODULE_PATH:PATH=$HOME/work/cmake/proj ../proj
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- PROJECT_NAME = Project
CMake Error: Error required internal CMake variable not set, cmake may
be not be built correctly.
Missing variable is:
CMAKE_CPP_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may
be not be built correctly.
Missing variable is:
CMAKE_CPP_COMPILER
CMake Error: Could not find cmake module
file:/home/loose/work/cmake/build/CMakeFiles/CMakeCPPCompiler.cmake
CMake Error: Could not find cmake module file:CMakeCPPInformation.cmake
CMake Error: CMAKE_CPP_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

On Fri, 2009-09-11 at 16:34 +0200, Jeroen Dierckx wrote:
> On Fri, Sep 11, 2009 at 4:22 PM, Marcel Loose  wrote:
> > Hi David,
> >
> > I don't see the exact difference between (1) and (2). And yes, I was
> > thinking of using the project name as a target. You are right, that it
> > might cause clashes with existing projects, though :-(
> >
> > We use the convention that project names are always capitalized, so we
> > usually don't run into problems.
> >
> > Is there a nifty trick to wrap the 'project' command? I never succeeded
> > in doing that.
> 
> I did this once inside a macro, and that should work as expected. The
> code of the macro should behave just as if it was copy-pasted to the
> place where you call the macro, so scope and such will be that of the
> place where you call it.
> 
> Greetings,
> JeDi
> 
> 
> >
> > Best regards,
> > Marcel Loose.
> >
> >
> > On Fri, 2009-09-11 at 07:09 -0400, David Cole wrote:
> >> When you say "make the project name a target" what do you mean by
> >> that?
> >>
> >>
> >> (1) internally create a CMake target with the given name?
> >> (2) create a makefile target with that name that builds all the cmake
> >> targets in that cmake project?
> >> (3) something else?
> >>
> >>
> >> (1) is probably not feasible for most folks -- because many people use
> >> the same name for their PROJECT statement and the main library or
> >> executable for that project which is already a cmake target (and a
> >> makefile target) with that name.
> >>
> >>
> >>
> >> On Fri, Sep 11, 2009 at 3:51 AM, Marcel Loose  wrote:
> >> Hi all,
> >>
> >> I was wondering whether it's a good idea to make the project
> >> name (i.e.
> >> the argument to the 'project' command) a target.
> >>
> >> Rationale: I have a project that consists of numerous
> >> sub-projects and I
> >> would like to be able to build some of these separately.
> >> Wrapping the
> >> 'project' command in a macro is not a solution, because AFAIK
> >> CMake
> >> *must* see a 'project' command in the top-level CMakeLists.txt
> >> file; a
> >> 'myproject' macro, wrapping the 'project' command, will not
> >> do.
> >>
> >> Any co