假设我有这样的项目依赖项:
每个DLL项目都有两个文件夹For i = 1 To wsD.Range("C" & wsD.Rows.Count).End(xlUp).Row
For k = 1 To wsC.Range("C" & wsC.Rows.Count).End(xlUp).Row
If (InStr(wsC.Cells(k,3).Value, wsD.Cells(i,2).Value)>0 Then
'you can assign the value to the Cell in Column C: wsC.Cells(k,3)
wsC.Cells(k,4) = wsD.Cells(i,2)
End If
Next k
Next i
和include
。 src
包含公共接口标头和include
实现以及非公共标头。
习惯于使用PUBLIC,PRIVATE和INTERFACE关键字对CMake的target_include_directories,我想告诉ByteIo项目是否以及哪个目录的消费者必须添加到他们自己的包含目录列表才能使用ByteIo项目。这同样适用于链接库 - 再次,就像CMake中的target_link_libraries一样。
现在我被迫根据ByteIo的标题直接或间接地手动将ByteIo的include目录添加到每个项目中。例如,SerialPort.dll项目中的类SerialPort是ByteIo.ddl项目中定义的ByteIo的子类,因此项目SerialPortDemo.exe必须添加两个项目的(公共)包含路径,ByteIo和SerialPort。 即使是上面的小例子(SerialPortDemo,SerialPort,XYZ-App和XYZ-Lib),这也是一个巨大的浪费时间并且容易出错。
不起作用:
Embarcadero C ++ Builder XE8是否为这个问题提供了一个理智,可维护的解决方案?
答案 0 :(得分:0)
现在我被迫直接或间接地手动将ByteIo的include目录添加到每个项目,具体取决于ByteIo。
您只需要为直接依赖于ByteIo(SerialPort和XYZ-Lib)的项目添加它。其他项目(SerialPortDemo和XYZ-App)没有理由对ByteIo有任何引用。
Embarcadero C ++ Builder XE8是否提供问题解决方案?
我想到的一件事是创建一个Option Set,其中包含您的共享设置,例如ByteIo文件夹的路径,并将其保存到.optset
文件中。然后,您可以根据需要将该选项集应用于每个项目。您可以将.optset
文件直接导入项目,覆盖其当前配置。或者,您可以创建对.optset
文件的引用,以便多个项目可以共享它。
如果这不起作用,您始终可以创建一个自定义Environment Variable,将其指向ByteIO的include文件夹,然后将该变量添加到每个项目的包含路径中。