[cmake-developers] target_include_directories branch in stage

Stephen Kelly steveire at gmail.com
Sun Jan 8 11:47:17 EST 2012


On 12/05/2011 03:17 PM, Brad King wrote:
> On 12/4/2011 12:49 PM, Stephen Kelly wrote:
>> I've pushed the branch to my gitorious clone again.
>>
>> https://gitorious.org/~steveire/cmake/steveires-cmake

Hi,

I'm revisiting this now that CMake 2.8.7 is out.

I've force pushed my branch:

https://gitorious.org/~steveire/cmake/steveires-cmake/commits/target-include-directories

For context, the branch as it was on December 4th is preserved here:

https://gitorious.org/~steveire/cmake/steveires-cmake/commits/target-include-directories-old

>
> Thanks.  Why do you maintain a special std::vector<std::string> member
> to hold the INCLUDE_DIRECTORIES target property? 

Mostly to simplify the implementation so that I don't need to serialize 
and de-serialize in multiple places. I also figured it must be faster to 
serialize and deserialize over const char * all the time in the multiple 
places that is needed.


> I think the property
> can be stored just like any other property during configuration.  Then
> the generators can use ExpandListArguments. 

Would that mean that every generator would have to ensure that the 
includes were unique etc?

> Initialization from the
> directory property value can just be added to cmTarget::SetMakefile:
>
>   this->SetPropertyDefault("INCLUDE_DIRECTORIES", 0);
>

I tried this (also removing this->IncludeDirectories = makefileIncludes; 
from the same function), and it makes the tests fail. This doesn't 
surprise me, as as far as I knew and read from the code, 
SetPropertyDefault is for initializing a property with the content of 
the property with the same name with a "CMAKE_" prefix.

If I've understood what you meant here, please expand.

> The directory-level IncludeDirectories vector can probably also go
> away in favor of a normal directory property if things are properly
> refactored.
>
>> The top two commits need to be reviewed and have real fixes decided and
>> written for them. Should the memoization be removed?

I have removed the last two commits from the branch and added a separate 
commit to remove the memoization.

Once again, the tests all pass for me. However, I have only tested with 
the "Unix Makefile" generator. The other generators (eg for Windows, 
Mac?) likely do not work.

How can this feature now be moved forward? Do I need to convince someone 
to volunteer to port the other generators? Should I just file a bug for 
porting the other generators and wait (possibly making the feature bitrot)?

Thanks,

Steve.



More information about the cmake-developers mailing list