BUG: Dependencies May Not Be Detected
PSS ID Number: Q114876
Article last modified on 08-12-1994

1.0 1.5 | 1.0

WINDOWS | WINDOWS NT


----------------------------------------------------------------------
The information in this article applies to:

 - Microsoft Visual WorkBench for Windows, versions 1.0 and 1.5
 - Microsoft Visual WorkBench for Windows NT, version 1.0
----------------------------------------------------------------------

SYMPTOMS
========

When a project includes header files that include each other, not all
of the dependencies are detected. This can cause the Visual WorkBench
to report that a source file is up to date when it is not up to date.

RESOLUTION
==========

It may be necessary to include some header files directly in the source
file, instead of in a header file. Please see the MORE INFORMATION
section for details.

STATUS
======

Microsoft has confirmed this to be a bug in the Visual WorkBench
for Windows, versions 1.0 and 1.5, and the Visual WorkBench for
Windows NT, version 1.1. We are researching this problem and will
post new information here in the Microsoft Knowledge Base as it
becomes available.

MORE INFORMATION
================

Situation 1
-----------

The problem can be demonstrated in the following situation:

// sample1.cpp

   #include "sample1.h"

// sample2.cpp

   #include "sample2.h"

// sample1.h

   #ifndef _SAMPLE1_H
   #define _SAMPLE1_H
   #include "sample2.h"
   #include "test1.h"
   #endif

// sample2.h

   #ifndef _SAMPLE2_H
   #define _SAMPLE2_H
   #include "sample1.h"
   #include "test2.h"
   #endif

// test1.h
// nothing required for this sample.

// test2.h
// nothing required for this sample.

The dependencies generated for this .MAK file will be:

   SAMPLE1_DEP = \
       c:\sample\sample1.h
       c:\sample\sample2.h
       c:\sample\test2.h
       c:\sample\test1.h

   SAMPLE2_DEP = \
       c:\sample\sample2.h
       c:\sample\sample1.h
       c:\sample\test2.h

SAMPLE2_DEP should also include c:\sample\test1.h

Situation 2
-----------

The correct dependencies are generated with the following changes:

// sample1.cpp

   #include "test2.h"
   #include "sample1.h"

// sample2.cpp

   #include "test1.h"
   #include "sample2.h"

// All other files are unchanged.

Additional reference words: 1.00 1.50
KBCategory: Tls
KBSubCategory:

=============================================================================

Copyright Microsoft Corporation 1994.
