This is a broad question. In the CNVkit package it's possible to address most of what you might be interested in, so here's the documentation for how to construct a "control" copy number profile to be subsequently used to detect CNVs in test samples: http://cnvkit.readthedocs.io/en/stable/pipeline.html#reference
The proper control depends on which aspects of the test sample(s) you're interested in. If the test sample is tumor tissue, then a reasonable control is non-lesional tissue from the same individual, but a pool of other non-lesional samples prepared and sequenced according to the same protocol usually performs even better, given that the tumor sample's CNVs of interest (i.e. somatic) are not expected to be present in normal tissue, other than through cell contamination.
If the test sample CNVs of interest are germline, then you probably want a pool of control samples from the same population. A trio design with multiple comparisons might also be useful if you structure and interpret it carefully.